NewtonSoft Json.NET和单元素数组



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

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

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

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

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

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

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

尝试使用JsonConvert.DeserializeObject方法:

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);
}

JSON文本也可能包含像1"hello world"这样的文字值。。。但我相信这些都是非常边缘的案例。。。

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

确保您的JSON单项数组仍然使用数组表示法[] 指定为数组

相关内容

  • 没有找到相关文章

最新更新