.net - 직렬화 및 역직렬화에서 날짜 및 시간 처리
承接上篇,现在我在类中加入一个日期时间类型的字段:
public class Student { public string StudentId { get; set; } public string Name { get; set; } public int age { get; set; } public string Address { get; set; } public DateTime Birthday { get; set; } }
如果不对birthday这个类型处理的话,序列化之后就会出现这个问题:
{"Address":"北京朝阳区","Birthday":"\/Date(1434943392228+0800)\/","Name":"水田如雅","StudentId":"110","age":20}
现在我们在原来的方法上面进行一个改进:
public static class JsonConvert { /// <summary> /// Converts the obj to json. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t">The t.</param> /// <returns>System.String.</returns> /// <remarks>Editor:v-liuhch CreateTime:2015/6/21 21:40:55</remarks> public static string ConvertObjToJson<T>(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(t.GetType()); try { using (MemoryStream ms=new MemoryStream()) { ser.WriteObject(ms,t); string strJson=Encoding.UTF8.GetString(ms.ToArray()); //替换Json的date字符串 string p = @"\\/Date\((\d+)\+\d+\)\\/"; MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDataToDateString); Regex reg = new Regex(p); strJson = reg.Replace(strJson, matchEvaluator); return strJson; } } catch (IOException) { //自己处理异常吧 return null; } } /// <summary> /// Jsons the deserialize. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="strJson">The STR json.</param> /// <returns>``0.</returns> /// <remarks>Editor:v-liuhch CreateTime:2015/6/21 21:46:37</remarks> public static T JsonDeserialize<T>(string strJson) where T:class //约束T为class,也可以放宽类型,这里只是个例子,写着玩儿的,欧巴们,此处可改 { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); try { //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式 string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"; MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate); Regex reg = new Regex(p); strJson = reg.Replace(strJson, matchEvaluator); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson))) { T obj = ser.ReadObject(ms) as T; return obj; } } catch (IOException e) { //自己处理异常吧 return null; } } /// <summary> /// Converts the json data to date string. /// </summary> /// <param name="m">The m.</param> /// <returns>System.String.</returns> /// <remarks>Editor:v-liuhch CreateTime:2015/6/22 11:39:18</remarks> private static string ConvertJsonDataToDateString(Match m) { string result = string.Empty; DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value)); dt = dt.ToLocalTime();//转换为本地时间 result = dt.ToString("yyyy-MM-dd HH:mm:ss"); return result; } /// <summary> /// Converts the date string to json date. /// </summary> /// <param name="m">The m.</param> /// <returns>System.String.</returns> /// <remarks>Editor:v-liuhch CreateTime:2015/6/22 11:39:15</remarks> private static string ConvertDateStringToJsonDate(Match m) { string result = string.Empty; DateTime dt = DateTime.Parse(m.Groups[0].Value); dt = dt.ToUniversalTime(); TimeSpan ts = dt - DateTime.Parse("1970-01-01"); result = string.Format("\\/Date({0}+0800)\\/",ts.TotalMilliseconds); return result; } }
当然,在序列化的时候,我们可以不对日期时间做单独处理,拿到前台JS之后,再对数据进行一个整合过滤,这样,就不会固定死日期时间的返回格式,感觉这样比在后台处理好。
以上就是.net——序列化与反序列化中对日期时间的处理的内容,更多相关内容请关注PHP中文网(www.php.cn)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

오늘날 인공지능(AI) 기술 개발은 본격화되고 있으며, 다양한 분야에서 큰 잠재력과 영향력을 보여주고 있습니다. 오늘 Dayao는 여러분에게 몇 가지 참고 자료를 제공하고자 4개의 .NET 오픈 소스 AI 모델 LLM 관련 프로젝트 프레임워크를 공유할 것입니다. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel은 OpenAI, Azure와 같은 대규모 언어 모델(LLM)을 통합하도록 설계된 오픈 소스 소프트웨어 개발 키트(SDK)입니다.

PHP 역직렬화 실패에 대한 해결 방법 직렬화된 데이터를 확인하십시오. 클래스 정의 확인, 오류 로그 확인, PHP 버전 업데이트, 보안 조치 적용 등을 수행합니다. 자세한 소개: 1. 직렬화된 데이터를 확인하십시오. 먼저 직렬화된 데이터가 유효하고 PHP의 직렬화 사양을 준수하는지 확인하십시오. 데이터가 손상되었거나 잘못된 형식인 경우 복구를 시도하거나 백업에서 올바른 데이터를 복원할 수 있습니다. 2. 클래스 정의를 확인하고 직렬화된 데이터에 사용된 모든 클래스가 존재하며 자동으로 로드될 수 있는지 확인하십시오. 클래스가 존재하지 않거나 액세스할 수 없는 경우 클래스 정의 등을 복구해 볼 수 있습니다.

PHP 데이터 처리 기술: 직렬화 및 역직렬화 기능을 사용하여 데이터 직렬화 및 역직렬화를 구현하는 방법 직렬화 및 역직렬화는 컴퓨터 과학에서 일반적으로 사용되는 데이터 처리 기술 중 하나입니다. PHP에서는 serialize() 및 unserialize() 함수를 사용하여 데이터 직렬화 및 역직렬화 작업을 구현할 수 있습니다. 이 글에서는 이 두 가지 기능을 사용하는 방법을 자세히 소개하고 관련 코드 예제를 제공합니다. 1. 컴퓨터 프로그래밍에서 직렬화와 역직렬화란 무엇입니까?

Flexjson은 Java 개체를 JSON 형식으로 직렬화 및 역직렬화하기 위한 경량 라이브러리입니다. JSONSerializer 클래스의 serialize() 메서드를 사용하여 객체 목록을 직렬화할 수 있습니다. 이 메서드는 대상 인스턴스에서 단순 직렬화를 수행합니다. 목록 유형의 객체 목록을 매개변수로 serialize() 메서드에 전달해야 합니다. 구문 publicStringserialize(Objecttarget) 예 importflexjson.JSONSerializer;importjava.util.*;publicclassJsonSerial

C++ 라이브러리 직렬화 및 역직렬화 가이드 직렬화: 출력 스트림을 생성하고 이를 아카이브 형식으로 변환합니다. 객체를 아카이브로 직렬화합니다. 역직렬화: 입력 스트림을 생성하고 이를 아카이브 형식에서 복원합니다. 아카이브에서 객체를 역직렬화합니다. 실제 예: 직렬화: 출력 스트림 생성. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에 직렬화합니다. 역직렬화: 입력 스트림을 생성합니다. 아카이브 객체를 생성합니다. 객체를 생성하고 아카이브에서 역직렬화합니다.

직렬화가 Java 성능에 미치는 영향: 직렬화 프로세스는 성능에 큰 영향을 미치는 리플렉션에 의존합니다. 직렬화에는 객체 데이터를 저장하기 위한 바이트 스트림 생성이 필요하므로 메모리 할당 및 처리 비용이 발생합니다. 큰 개체를 직렬화하면 많은 메모리와 시간이 소모됩니다. 직렬화된 객체는 네트워크를 통해 전송될 때 로드를 증가시킵니다.

@JsonPropertyOrder는 클래스 수준에서 사용되는 주석입니다. 이는 객체의 JSON 직렬화로 생성된 문자열에 필드가 나타나는 순서를 정의하는 필드 목록을 속성으로 사용합니다. 주석 선언에 포함된 속성은 정의된 순서대로 먼저 직렬화되고 정의에 포함되지 않은 속성은 그 뒤에 직렬화될 수 있습니다. 구문 public@interfaceJsonPropertyOrder 예 importcom.fasterxml.jackson.core.*;importcom.fasterxml.jackson.databind.*;importcom.fasterxml.jac
