none
使用Newtonsoft.Json处理json问题 RRS feed

  • 问题

  • 1:'Baidu',2:'SEO',3:'Web标准',4:'素材',5:'下载',6:'音乐',7:'电影'

    对象A有2个属性:id和name。id就是上面的1,2,3等,name就是"Baidu"、"SEO"、"Web标准"等。怎么通过Newtonsoft.Json转换上面的字符串?


    开心了就笑,不开心了就过会儿再笑

    2012年4月2日 15:48

答案

  • 大概这样

    public   class A
    {
        public int ID
        {
            get;
            set;
        }
    
        public string Name
        {
            get;
            set;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
        {
            string json = @"[
                              {
                                'id':1,
                                'name': 'Baidu'
                              },
                              {
                                'id':2,
                                'name': 'SEO'
                              },
                              {
                                'id':3,
                                'name': 'Web标准'
                              },
                              {
                                'id':4,
                                'name': '素材'
                              },
                              {
                                'id':5,
                                'name':'下载'
                              },
                              {
                                'id':6,
                                'name':'音乐'
                              },
                              {
                                'id':7,
                                'name': '电影'
                              }
                            ]";
    
    
            JArray array = JsonConvert.DeserializeObject<JArray>(json);
            List<A> list = new List<A>();
            foreach (JObject obj in array.Values<JObject>())
            {
                A a = new A();
                a.ID = Convert.ToInt32(obj["id"].ToString());
                a.Name = obj["name"].ToString();
                list.Add(a);
            }
    
            Response.Write("The first Name is" + list[0].Name);//show result
        }

    小弟之前大概研究过这套件该怎么读取JSON字符串

    不妨参考看看

    http://www.dotblogs.com.tw/shadow/archive/2011/12/04/60576.aspx



    • 已编辑 Shadow .Net 2012年4月2日 16:58
    • 已标记为答案 NewJoin 2012年4月4日 7:26
    2012年4月2日 16:57
  • 这样是不能直接处理

    不然也可以考虑,把每个对象个别拆开表示

    {"id":1 ,"name":"Baidu"}

    {"id":2,"name":"SEO"}

    ...

    ...


    • 已标记为答案 NewJoin 2012年4月4日 7:26
    2012年4月3日 6:35

全部回复

  • 大概这样

    public   class A
    {
        public int ID
        {
            get;
            set;
        }
    
        public string Name
        {
            get;
            set;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
        {
            string json = @"[
                              {
                                'id':1,
                                'name': 'Baidu'
                              },
                              {
                                'id':2,
                                'name': 'SEO'
                              },
                              {
                                'id':3,
                                'name': 'Web标准'
                              },
                              {
                                'id':4,
                                'name': '素材'
                              },
                              {
                                'id':5,
                                'name':'下载'
                              },
                              {
                                'id':6,
                                'name':'音乐'
                              },
                              {
                                'id':7,
                                'name': '电影'
                              }
                            ]";
    
    
            JArray array = JsonConvert.DeserializeObject<JArray>(json);
            List<A> list = new List<A>();
            foreach (JObject obj in array.Values<JObject>())
            {
                A a = new A();
                a.ID = Convert.ToInt32(obj["id"].ToString());
                a.Name = obj["name"].ToString();
                list.Add(a);
            }
    
            Response.Write("The first Name is" + list[0].Name);//show result
        }

    小弟之前大概研究过这套件该怎么读取JSON字符串

    不妨参考看看

    http://www.dotblogs.com.tw/shadow/archive/2011/12/04/60576.aspx



    • 已编辑 Shadow .Net 2012年4月2日 16:58
    • 已标记为答案 NewJoin 2012年4月4日 7:26
    2012年4月2日 16:57
  • 如此看来,json="1:'Baidu',2:'SEO',3:'Web标准',4:'素材',5:'下载',6:'音乐',7:'电影'",是不能直接处理的了?

    开心了就笑,不开心了就过会儿再笑

    2012年4月3日 6:30
  • 这样是不能直接处理

    不然也可以考虑,把每个对象个别拆开表示

    {"id":1 ,"name":"Baidu"}

    {"id":2,"name":"SEO"}

    ...

    ...


    • 已标记为答案 NewJoin 2012年4月4日 7:26
    2012年4月3日 6:35