C# Json 역정렬에서 키를 처리하는 특수 문자
8700 단어 json
view source
?
1. { 2. "id" : 1, 3. "@value" : "this a @" , 4. "$p" : "my name a $" 5. } 일반적으로 Json이 반서열화될 때, Json을 서열화된 클래스에 비추어 이름을 지정할 필요가 없다.예컨대
view source
?
1. public JsonTest{ 2. public string id{ get ; set ;} 3. } Json의 ID는 반서열화할 때 클래스의 ID와 자동으로 대응합니다.
그러나 키에 특수 문자가 있을 때 $, @ 등은 클래스의 속성에 특수 문자를 정의할 수 없습니다.
따라서 [DataContract]와 [DataMember]를 사용해야 합니다.
데이터 협정을 정의하다.
view source
?
01. [DataContract] 02. public class jtest 03. { 04. [DataMember(Order = 0)] 05. public int id { get ; set ; } 06. [DataMember(Order = 1, Name = "@value" )] 07. public string value { get ; set ; } 08. [DataMember(Order = 2, Name = "$p" )] 09. public string _p { get ; set ; } 10. } 역서열화
view source
?
1. jtest test = serializer.ReadObject( new MemoryStream(Encoding.UTF8.GetBytes(jsonStr))) as jtest; 2. Console.WriteLine( test.value ); 서열화
view source
?
1. var stream = new MemoryStream(); 2. serializer.WriteObject(stream, test); 3. byte [] dataBytes = new byte [stream.Length]; 4. stream.Position = 0; 5. stream.Read(dataBytes, 0, ( int )stream.Length); 6. string dataString = Encoding.UTF8.GetString(dataBytes); 전체 테스트 클래스:
view source
?
01. using System; 02. using System.Text; 03. using System.Runtime.Serialization; 04. using System.Runtime.Serialization.Json; 05. using System.IO; 06. 07. 08. namespace ConsoleApplication1 09. { 10. class Program 11. { 12. static void Main( string [] args) 13. { 14. string jsonStr = "{\"id\":1,\"@value\":\"this a @\",\"$p\":\"my name a $\"}" ; 15. DataContractJsonSerializer serializer = new DataContractJsonSerializer( typeof (jtest)); 16. 17. // 18. jtest test = serializer.ReadObject( new MemoryStream(Encoding.UTF8.GetBytes(jsonStr))) as jtest; 19. Console.WriteLine( test.value ); 20. 21. // 22. var stream = new MemoryStream(); 23. serializer.WriteObject(stream, test); 24. byte [] dataBytes = new byte [stream.Length]; 25. stream.Position = 0; 26. stream.Read(dataBytes, 0, ( int )stream.Length); 27. string dataString = Encoding.UTF8.GetString(dataBytes); 28. 29. Console.WriteLine(dataString); 30. Console.ReadKey(); 31. } 32. } 33. [DataContract] 34. public class jtest 35. { 36. [DataMember(Order = 0)] 37. public int id { get ; set ; } 38. [DataMember(Order = 1, Name = "@value" )] 39. public string value { get ; set ; } 40. [DataMember(Order = 2, Name = "$p" )] 41. public string _p { get ; set ; } 42. } 43. } 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.