如何解析动态数组?

时间:2018-09-27 12:18:52

标签: c# arrays json.net

我的数据来自:

<table style="width:40%">
    <tr>
        <th>52</th><th>18</th><th>140</th><th>41</th><th>56</th>
    </tr>
    <tr>
        <th>54</th><th>18</th><th>145</th><th>43</th><th>58</th>
    </tr>
</table>

已作为路径中的动态参数接收到。 我想将其转换为[ { "cifId": 735960120 }, { "cifId": 735960121 } ] 的{​​{1}}。

我尝试了List<string>中的cifId和其他各种选项。

以下是以下代码:

JObject

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以解析为JArray然后遍历数组:

Try it online!

private static List<string> GetCifIds(dynamic themeParameters)
{
    var items = JArray.Parse(themeParameters);
    var cifIds = new List<string>();
    foreach (var dynamicCif in items)
    {
        cifIds.Add(dynamicCif.cifId.ToString());
    }

    return cifIds;
}

如果您的json错误地包装在{}中,则可以通过将其删除来使其有效。请记住在解析JSON之前先检查它是否有效。要检查json的有效性,请使用json validator

Try it online!

private static List<string> GetCifIds(dynamic themeParameters)
{
    var json = themeParameters.ToString();
    var items = JArray.Parse(json.Substring(1, json.Length - 2));
    var cifIds = new List<string>();
    foreach (var dynamicCif in items)
    {
        cifIds.Add(dynamicCif.cifId.ToString());
    }

    return cifIds;
}

答案 1 :(得分:0)

创建这样的类

public class JsonModel
{
    public int cifId { get; set; }
}

并将您的json解析为

List<int> cifIdList = new List<int>();
var jsonObj = NewtonSoft.JsonConvert.DeserializeObject<List<JsonModel>>(jsonString);
foreach(var elem in jsonObj){
    cifIdList.Add(elem.cifId);
}

您现在可以在列表cifIdList中找到所有ID