当数组大小变为零时,如何在 c# 中循环 JSON JArray
How to Loop on JSON JArray in c# when Array size becomes Zero
我有两个自动生成的 JSON 数据,如下所示。我想获取 Colors Tag 中的所有数据。
我创建了一个“Colors”的 JArray 并开始循环所有可用数据,但是当只有一种颜色可用时我的代码开始给出异常,因为“Colors”不是 JArray 而不是 JProperty。请参阅下面的示例代码。
处理这种情况的理想方法是什么?
{
"UID":1234,
"Colors":["red", "blue", "green"]
}
{
"UID":1234,
"Colors":"green"
}
JObject jsonObject = (JObject)JsonConvert.DeserializeObject(jsonText, settings);
foreach (JObject reg in jsonObject["Colors"]) {
// Write to console.
}
首先,我会让您的架构 JSON "Colors"
成为一个数组,因为这可以让您的 JSON 成为一个强大的架构。
如果不能修改schema可以尝试用JObject.Parse
然后用is
判断类型
var jsonObject = JObject.Parse(jsonText);
if (jsonObject["Colors"] is JArray)
{
foreach (JObject reg in jsonObject["Colors"]) {
// Write to console.
}
}
else if(jsonObject["Colors"] is JToken)
{
//jsonObject["Colors"]
}
我有两个自动生成的 JSON 数据,如下所示。我想获取 Colors Tag 中的所有数据。 我创建了一个“Colors”的 JArray 并开始循环所有可用数据,但是当只有一种颜色可用时我的代码开始给出异常,因为“Colors”不是 JArray 而不是 JProperty。请参阅下面的示例代码。
处理这种情况的理想方法是什么?
{
"UID":1234,
"Colors":["red", "blue", "green"]
}
{
"UID":1234,
"Colors":"green"
}
JObject jsonObject = (JObject)JsonConvert.DeserializeObject(jsonText, settings);
foreach (JObject reg in jsonObject["Colors"]) {
// Write to console.
}
首先,我会让您的架构 JSON "Colors"
成为一个数组,因为这可以让您的 JSON 成为一个强大的架构。
如果不能修改schema可以尝试用JObject.Parse
然后用is
判断类型
var jsonObject = JObject.Parse(jsonText);
if (jsonObject["Colors"] is JArray)
{
foreach (JObject reg in jsonObject["Colors"]) {
// Write to console.
}
}
else if(jsonObject["Colors"] is JToken)
{
//jsonObject["Colors"]
}