如何在C#中创建和存储json对象数组

时间:2016-09-01 17:49:33

标签: c# json json.net

我正在尝试测试Newtonsoft反序列化JSON数据。我想创建一个json对象数组并反序列化它们。

例如

我的代码:

public class TestJson
{
    public string thing1
    {
        get;
        set;
    }

    public string thing2
    {
        get;
        set;
    }
}

var json = ??????

我尝试了什么

var json = [{thing1:"f",thing2="x"},{thing1:"c",thing2="bx"}];

//The above line is givig compiler error in C#

List <TestJson> exam = new List<TestJson>();
exam = JsonConvert.DeserializeObject<List<TestJson>>(json);

我的目标是创建json aray pf对象,然后将它们反序列化为类。我正在使用Newtonsoft.Json进行反序列化。

3 个答案:

答案 0 :(得分:1)

这里的问题似乎是json字符串:

&argstr[0][0]

首先,DeserializeObject方法需要一个字符串作为参数。 其次,JSON要求键名称用引号括起来。 第三,键/值对的JSON语法是关键:值不是键=值

因此正确的语法是:

var json = [{thing1:"f",thing2="x"},{thing1:"c",thing2="bx"}];

干杯!

答案 1 :(得分:1)

初始化对象后,可以使用Newtonsoft JSON进行序列化和反序列化。一个简单的例子是:

TestJson[] testArr = new TestJson[] { new TestJson() { thing1 = "a1", thing2 = "a2" },
                                      new TestJson() { thing1 = "b1", thing2 = "b2" }
                                    };
string json = JsonConvert.SerializeObject(testArr);
//Serialized string is: [{"thing1":"a1","thing2":"a2"},{"thing1":"b1","thing2":"b2"}]
TestJson[] newObject = JsonConvert.DeserializeObject<TestJson[]>(json);

答案 2 :(得分:0)

我认为你应该尝试使用这种语法:

string json = @"[{'thing1':'a1', 'thing2':'a2'}, {'thing1':'b1', 'thing2':'b2'}, {'thing1':'c1', 'thing2':'c2'}]";

我认为用这种方式编写很简单,对于设定值,你应该使用':',而不是'='就像at(thing2 =“x”)

我希望能帮助你。