c#如何解析json?
{ "retcode": 0, "result": [ { "poll_type": "message", "value": { "msg_id": 32065, "from_uin": 2246865592, "to_uin": 1589188359, "msg_id2": 605408, "msg_type": 9, "reply_ip": 178848417, "time": 1352614319, "content": [ [ "font", { "size": 10, "color": "000000", "style": [ 0, 0, 0 ], "name": "\u9ED1\u4F53" } ], "hi " ] } } ] }
请问如何用Newtonsoft.Json或其他类库取出hi这个值,感激不尽!
杰b的朋友
11 years ago
Answers
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; using Newtonsoft.Json.Linq; namespace cscliTest { public class Font { public int size; public int color; public string name; public List<int> style = new List<int>(); } public class Content { public string hi; public Font font = new Font(); } public class Value { public int msg_id; public uint from_uin; public uint to_uin; public int msg_id2; public int msg_type; public int reply_ip; public int time; public List<Content> content = new List<Content>(); } public class Result { public string poll_type; public Value value; } public class sss { public int retcode; public List<Result> result = new List<Result>(); } public class Test { public int m_a; public int a { get; set; } } class Program { static void Main(string[] args) { //测试数据 sss a = new sss(); a.retcode = 0; Result r = new Result(); Value v = new Value(); Content c = new Content(); Font f = new Font(); f.size = 10; f.color = 0; f.style = new List<int>(new int[] { 0, 0, 0 }); f.name = "xxx"; c.font = f; c.hi = "hello"; v.msg_id = 32065; v.from_uin = 2246865592; v.to_uin = 1589188359; v.msg_id2 = 605408; v.msg_type = 9; v.reply_ip = 178848417; v.time = 1352614319; v.content.Add(c); r.value = v; a.result.Add(r); string xx = JsonConvert.SerializeObject(a); Console.WriteLine(xx); //方法一(需定义上面那些类) sss a2 = (sss)JsonConvert.DeserializeObject<sss>(xx); Console.WriteLine(a2.retcode); //方法二(不需定义上面那些类) JObject o = (JObject)JsonConvert.DeserializeObject(xx); JToken o2 = o["result"][0]; JToken o3 = o2["value"]; JToken o4 = o3["content"][0]; JToken o5 = o4["hi"]; Console.WriteLine(o5.ToString()); } } }
感觉content后面的两个[[格式有问题,所以我这里的和你的格式有点差别,请注意。
以前做过,今天翻了下,网上的太乱,以至于弄了挺久。
坂上智代
answered 11 years ago