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

本文关键字:存储 json 数组 对象 创建 | 更新日期: 2023-09-27 18:05:07

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

例如

我代码:

public class TestJson
{
    public string thing1
    {
        get;
        set;
    }
    public string thing2
    {
        get;
        set;
    }
}
var json = ??????

What I tried

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数组的对象,然后反序列化到类。我用的是Newtonsoft。

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

问题似乎是json字符串:

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

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

因此,正确的语法应该是:
var json = "[{ '"thing1'": '"f'",'"thing2'" : '"x'"},{ '"thing1'": '"c'",'"thing2'" : '"bx'"}]";

干杯!

在初始化对象之后,可以使用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);

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

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

我认为这样写很容易,对于设置值,你应该使用':',而不是'=',如at (thing2="x")