【问题标题】:How to Loop through serialized json如何循环遍历序列化的 json
【发布时间】:2021-06-29 13:18:17
【问题描述】:

Res={"result":["123","563"]}

这是我拥有的类似 json 文件。我必须遍历它并将每个值分配为 id。 我正在尝试

Obj = JsonConvert.DeseraializeObject<classname>(Res);
Foreach(string id in Obj)
{Function();}

我收到错误,因为 class 没有 getenumerator 的扩展名

编辑:
我这样做了

List<classname> objlist = jsonconvert.deserializeObject<list<classname>>(res); 
foreach (string id in objlist)
{function();}

foreach 循环出错,因为无法将类名转换为字符串

【问题讨论】:

  • 欢迎来到 StackOverflow。请记住,C# 是区分大小写的语言。所以,请尽量提供可以编译的有效C#代码。

标签: c# json serialization foreach json-deserialization


【解决方案1】:

在 JSON 文件中,您有带有键“结果”的字符串数组。可以这样建模:

public class Result
{
    public List<string> results { get; set; }
}

你可以反序列化,然后用下一种方式循环遍历它:

var data = JsonConvert.DeserializeObject<Result>(Res);
    foreach (var id in data.results)
    {
      // Assignment logic
    }

【讨论】:

  • 此代码将因NullReferenceException 而崩溃。示例 json 包含一个名为 result 的字段。您的 Result 类定义了一个属性 (Results),它不存在于 json 中,这就是为什么它将为空。该应用程序在到达 foreach 时将失败。请修正您提出的解决方案。
  • 请解释您的代码(即使是解释性代码 cmets 也很有帮助)。
【解决方案2】:

您的对象应该具有属性 List 或 List,并且您将迭代 throw 它,而不是在 Obj 中。

【讨论】:

    【解决方案3】:

    你的 Json 结构在 c# 中看起来像这样

    using Newtonsoft.Json;
    
    public class Result
    { 
        [JsonProperty("result")]
        List<string> Res { get; set; }
    }
    

    反序列化:

    Result r = JsonConvert.DeserializeObject<Result>(jsonString);
    

    简单说明:你的json有一个叫“result”的属性,这个属性是一个“string”类型的“list”List&lt;string&gt;.

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 2021-04-26
      • 2020-06-12
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      相关资源
      最近更新 更多