当数组大小变为零时,如何在 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"]
}