我如何用newtonsoft解析json数组

时间:2014-08-08 05:40:13

标签: c# .net json

我有这个json字符串:

[ 
   {f_id:100,r_id:200,count:2,c_id=111},
   {f_id:120,r_id:200,count:1,c_id=111 }
]


我想用newtonsoft.json解析json字符串。
我怎么能这样做?

我写这段代码:

private void button1_Click(object sender, EventArgs e)
    {
        string json = @"[ 
{f_id:100,r_id:200,count:2,c_id=111},
{f_id:120,r_id:200,count:1,c_id=111 }
]";
        List<myClass> tmp = JsonConvert.DeserializeObject<List<myClass>>(json);
        int firstFId = tmp[0].f_id;
        label1.Text = firstFId.ToString();
        label2.Text = tmp[1].f_id.ToString();



    }

    public class myClass
    {
        public int f_id { get; set; }
        public int r_id { get; set; }
        public int count { get; set; }
        public int c_id { get; set; }


    }


但是有这个错误:

An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' occurred in    Newtonsoft.Json.dll

Additional information: Invalid JavaScript property identifier character: =. Path '[0].count', line 2, position 32.

1 个答案:

答案 0 :(得分:0)

创建一个代表数据的类。

public class MyClass {
   public int f_id { get; set; }
   public int r_id { get; set; }
   public int count { get; set; }
   public int c_id { get; set; }
}

在您的情况下,将您的json字符串反序列化为MyClass列表。

List<MyClass> tmp = JsonConvert
    .DeserializeObject<List<MyClass>>(@"
                                        [
                                            {
                                            f_id: 100,
                                            r_id: 200,
                                            count: 2,
                                            c_id:111
                                            },
                                            {
                                            f_id: 120,
                                            r_id: 200,
                                            count: 1,
                                            c_id:111
                                            }
                                        ]
                                        ");

使用索引

访问数据
int firstFId = tmp[0].f_id;

更新

您问题中的json字符串无效。

c_id=111 

应该是

c_id:111