我有一些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单项数组仍然使用数组表示法[]
指定为数组