如何在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。
问题似乎是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")