我试图将JSON
数据存储到一个类中。在我遇到数组之前,我可以通过:JSON
将我的其他var ser = JsonConvert.DeserializeObject<ClsResult>(myJSON);
字符串反序列化为类。
{
\"Test\": [{
\"FirstBool\":1,
\"aString\":\"hello\"
}]
}
这是我JSON
的课程:
public class Test
{
[JsonProperty("FirstBool")]
public bool FirstBool { get; set; }
[JsonProperty("aString")]
public string aString { get; set; }
}
public class ResultObject
{
[JsonProperty("Test")]
public List<Test> Test { get; set; }
}
如何反序列化非数组JSON
:
var ser = JsonConvert.DeserializeObject<ResultObject>(myJSON);
我需要做些哪些更改才能让它再次发挥作用?
答案 0 :(得分:1)
编辑回答
我以后发现的json字符串包含名为Test
的对象,它基本上是object
s(object[]
)的数组。
正如你从json字符串中看到的那样:
{ &#34;测试&#34;:[{ &#34; FirstBool&#34; :1, &#34; ASTRING&#34; :&#34;你好&#34; }] }
[
表示json对象以数组类型开头,]
表示json对象以数组类型结束。
{
表示json对象开始一个对象类型,}
表示json对象结束了一个对象类型。
在您的情况下,需要使用Newtonsoft.Json
库中的现有方法来创建自定义反序列化器。
Test
对象的示例可以是:
JObject obj = JObject.Parse(jsonString);
// now your obj contains field named "Test" that is of type object[]
// to retrieve informations you have to select "Test" token
JToken testToken = obj.SelectToken("Test");
// your token contains now something like " [{ "FirstBool" : 1, "aString" : "hello" }]"
// which basically is an array
// meaning that you have to iterate through this
foreach(var child in token.Children())
{
// and convert it to a Test object
Test test = JsonConvert.DeserializeObject<Test>(child.ToString());
// test now is fully deserialized object
}
答案 1 :(得分:0)
将其反序列化为列表:
JsonConvert.DeserializeObject<List<Test>>(json);
...而不是包装器对象。