NewtonSoft Json.NET和单元素阵列

时间:2015-03-20 16:09:20

标签: c# arrays json json.net

我有一些JSon,我正在使用ToObject方法转换为对象。

这个Json的一部分有一个重复元素,它在Json文本中正确表示为一个数组。当我转换它时,它正确映射到C#对象

public IList<FooData> Foo { get; set; }

但是当我只有1个元素时,我得到一个错误,说我试图解析成对象的Json不是数组,因为它周围没有[]

Json.NET是否支持单元素数组?

2 个答案:

答案 0 :(得分:3)

  

但是当我只有1个元素时,我得到一个错误,说Json   我试图解析成一个对象不是一个数组,因为它   周围没有[]。

如果JSON文本周围没有[],那么它不是单元素数组:实际上它是一个对象(例如:{{1 }})。

尝试使用{ "text": "hello world" }方法:

JsonConvert.DeserializeObject

JSON文本也可能包含jsonText = jsonText.Trim(); // If your JSON string starts with [, it's an array... if(jsonText.StartsWith("[")) { var array = JsonConvert.DeserializeObject<IEnumerable<string>>(jsonText); } else // Otherwise, it's an object... { var someObject = JsonConvert.DeserializeObject<YourClass>(jsonText); } 1这样的文字值......但我相信这些是非常边缘的情况......

对于上述边缘情况,只需使用"hello world"对其进行反序列化(将JsonConvert.DeserializeObject<string>(jsonText)替换为string或其他......)。

答案 1 :(得分:1)

确保封闭JSON单项数组仍使用数组表示法[]指定为数组