您好,匿名用户
随意问技术百科期待您的加入

c#如何解析json?

0 投票
{
    "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这个值,感激不尽!

用户头像 提问 2012年 12月1日 @ Varus 上等兵 (281 威望)
分享到:

1个回答

0 投票
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后面的两个[[格式有问题,所以我这里的和你的格式有点差别,请注意。
以前做过,今天翻了下,网上的太乱,以至于弄了挺久。

用户头像 回复 2012年 12月1日 @ Viktor 上等兵 (290 威望)
提一个问题:

相关问题

0 投票
1 回复 33 阅读
用户头像 提问 2012年 12月1日 @ Vayne 上等兵 (271 威望)
0 投票
1 回复 46 阅读
用户头像 提问 2012年 12月1日 @ Rammus 上等兵 (334 威望)
0 投票
0 回复 38 阅读
0 投票
1 回复 42 阅读
用户头像 提问 2012年 12月1日 @ Rumble 上等兵 (394 威望)
0 投票
0 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Kassadin 上等兵 (255 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...