我有一些JSon,我正在使用ToObject方法转换为对象。
这个Json的一部分有一个重复元素,它在Json文本中正确表示为一个数组。当我转换它时,它正确映射到C#对象
public IList<FooData> Foo { get; set; }
但是当我只有1个元素时,我得到一个错误,说我试图解析成对象的Json不是数组,因为它周围没有[]
。
Json.NET是否支持单元素数组?
答案 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单项数组仍使用数组表示法[]
指定为数组