Newtonsoft.Json如何解析json?json字符的格式不是固定的,所以没法写一个对应的类
Newtonsoft.Json怎么解析json?json字符的格式不是固定的,所以没法写一个对应的类
我上网查了一下,感觉都是先写一个相对应的类,然后直接序列化或反序列化成这个类。
但是我现在碰到的情况是,json字符的格式不是固定的,所以没法写一个对应的类。
请问有没有好解析xml相类似的解析方法?
谢谢!
------解决方案--------------------
Newtonsoft.Json.Linq.JObject
Newtonsoft.Json.Linq.JArray
------解决方案--------------------
我的做法是把Json的内容反序列化到一个自定义的字典类里,这个字典类需要标识为可序化(SerializableAttribute),并且提供了自定义序列化的行为,也就是实现了ISerializable接口,提供了一个专供反序列化使用的构造函数(protected MyClass(SerializationInfo info, StreamingContext context))。然后用System.Runtime.Serialization.Json.DataContractJsonSerializer来序列化和反序列化JSON文本。
------解决方案--------------------
我上网查了一下,感觉都是先写一个相对应的类,然后直接序列化或反序列化成这个类。
但是我现在碰到的情况是,json字符的格式不是固定的,所以没法写一个对应的类。
请问有没有好解析xml相类似的解析方法?
谢谢!
------解决方案--------------------
Newtonsoft.Json.Linq.JObject
Newtonsoft.Json.Linq.JArray
------解决方案--------------------
我的做法是把Json的内容反序列化到一个自定义的字典类里,这个字典类需要标识为可序化(SerializableAttribute),并且提供了自定义序列化的行为,也就是实现了ISerializable接口,提供了一个专供反序列化使用的构造函数(protected MyClass(SerializationInfo info, StreamingContext context))。然后用System.Runtime.Serialization.Json.DataContractJsonSerializer来序列化和反序列化JSON文本。
------解决方案--------------------
- C# code
var mJObj = JObject.Parse(json); var mName = (JArray)mJObj["Result"]; for(var i=0;i<mName.Count;i++) { var tmpObj = (JObject)mName[i]; var tmpID = (string)tmpObj["Id"]; } var mSize = (int)mJObj["size"];
------解决方案--------------------
------解决方案--------------------
using System.Runtime.Serialization;
- C# code
public string Serialize<T>(T data) { using (var memoryStream = new MemoryStream()) { var serializer = new DataContractSerializer(typeof(T)); serializer.WriteObject(memoryStream, data); memoryStream.Seek(0, SeekOrigin.Begin); var reader = new StreamReader(memoryStream); string content = reader.ReadToEnd(); return content; } } public T Deserialize<T>(string xml) { using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xml))) { var serializer = new DataContractSerializer(typeof(T)); T theObject = (T)serializer.ReadObject(stream); return theObject; } }
------解决方案--------------------
------解决方案--------------------