在 C# 中迭代 JSON 对象数组名称值对

男孩

我从这里的一个类似问题中获取了这个例子:

在 C# 中迭代​​ JSON 对象(不是数组)

但是我的数据格式有点不同,它有数组括号。

正如所指出的,我可以有未定义数量的条目,我想遍历条目并将数据结构提取到基于定义的类的对象数组/列表中。

{
  "-KeArK3V02mXYWx2OMWh" : [{
    "Description" : "this is a description",
    "Location" : "Atlanta",
    "Name" : "Event One",
    "Time" : "2017-03-01T21:53:12.924645Z"
  }],
  "-KeAtCNF_rmewZ_U3PpH" : [{
    "Description" : "another description",
    "Location" : "Charlotte",
    "Name" : "Event Two",
    "Time" : "2017-03-01T22:01:25.603547Z"
  }],
  "-KeAtd8CQW_EfH3Sw4YQ" : [{
    "Description" : "description goes here",
    "Location" : "Toronto",
    "Name" : "Event Three",
    "Time" : "2017-03-01T22:03:19.3953859Z"
  }]
}

我有一个名为 Event 的类,其定义如下

class Title {
  public string Description { get; set; }
  public string Location { get; set; }
  public string Name { get; set; }
  public DateTime Time { get; set; }
}

那里给出的答案(我认为是正确的)不起作用

Dictionary<string, Title> elist = JsonConvert.DeserializeObject<Dictionary<string, Title>>(jsonString);

它给了我一个错误:

无法将当前 JSON 数组(例如 [1,2,3])反序列化为“Title”类型,因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化。要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化。JsonArrayAttribute 也可以添加到类型中以强制它从 JSON 数组反序列化。路径“-KeArK3V02mXYWx2OMWh”,第 2 行,位置 XX。

网步

Json的结构有问题。您的 json 具有类似 Key 和 value 的格式,但 value 是按照 json 格式的数组。你必须做以下事情。

Dictionary<string,Title[]> elist = JsonConvert.DeserializeObject<Dictionary<string, Title[]>>(jsonString);

以上解决方案是最简单的一种。

第二个解决方案。(您必须根据需要进行修改,但当前的 json 可以使用)

 public class TitleConverter : JsonConverter
    {
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JArray jObject = JArray.Load(reader);

            Title title = JsonConvert.DeserializeObject<Title>(jObject[0].ToString());
                return title;
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            throw new NotImplementedException();
        }

        public override bool CanConvert(Type objectType)
        {
            if (objectType.Name == "Title")
                return true;
            return false;
        }
    }

现在这样使用。

Dictionary<string,Title> elist = JsonConvert.DeserializeObject<Dictionary<string, Title>>(jsonString,new TitleConverter());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提取JSON数组名称C#

来自分类Dev

以数组名称分组显示HTML中的JSON结果数组

来自分类Dev

如何在Javascript中动态获取JSON数组名称

来自分类Dev

json_decode() 结果中的数组名称

来自分类Dev

c中的数组名称到底是什么?

来自分类Dev

c中的数组名称到底是什么?

来自分类Dev

使用 loadsh 获取 json 对象数组名称(元数据)

来自分类Dev

如何在Highcharts中制作json数组名称系列名称,数组数据-series数据?

来自分类Dev

迭代 C 中的字符数组

来自分类Dev

如何在C#中迭代JSON并将每个对象添加到列表中?

来自分类Dev

使用变量的值作为PHP中的数组名称?

来自分类Dev

变量的C ++数组名称

来自分类Dev

无法解析数组名称中带有破折号/连字符的JSON数组

来自分类Dev

如何在没有任何数组名称的JSON数组内容中确保得到保证的响应?

来自分类Dev

如何通过解析 url 中的数组名称从 JSON 文件中获取数据

来自分类Dev

如何在Objective-C中迭代一个简单的JSON对象?

来自分类Dev

迭代JSON数组对象

来自分类Dev

像在C#中的foreach一样在json数组中进行迭代

来自分类Dev

对数组的引用与C ++中的数组名称完全相同吗

来自分类Dev

在 C 中通过数组名称和指针访问二维数组元素

来自分类Dev

如何在 Python 中迭代 json 对象?

来自分类Dev

PostgreSQL 中 json 数组元素的迭代

来自分类Dev

如何在Android Studio中解析没有数组名称的Json

来自分类Dev

如何从JSON中删除第一个数组名称

来自分类Dev

使用包含对象中的各个属性转换 JSON 数组中的名称-值对数组

来自分类Dev

将指针(数组名称)传递给C / C ++中的函数

来自分类Dev

如何在Angular中的json对象内迭代数组值

来自分类Dev

迭代嵌套 json 中的所有值

来自分类Dev

C ++中通过右值引用(&&)进行迭代的迭代器

Related 相关文章

  1. 1

    提取JSON数组名称C#

  2. 2

    以数组名称分组显示HTML中的JSON结果数组

  3. 3

    如何在Javascript中动态获取JSON数组名称

  4. 4

    json_decode() 结果中的数组名称

  5. 5

    c中的数组名称到底是什么?

  6. 6

    c中的数组名称到底是什么?

  7. 7

    使用 loadsh 获取 json 对象数组名称(元数据)

  8. 8

    如何在Highcharts中制作json数组名称系列名称,数组数据-series数据?

  9. 9

    迭代 C 中的字符数组

  10. 10

    如何在C#中迭代JSON并将每个对象添加到列表中?

  11. 11

    使用变量的值作为PHP中的数组名称?

  12. 12

    变量的C ++数组名称

  13. 13

    无法解析数组名称中带有破折号/连字符的JSON数组

  14. 14

    如何在没有任何数组名称的JSON数组内容中确保得到保证的响应?

  15. 15

    如何通过解析 url 中的数组名称从 JSON 文件中获取数据

  16. 16

    如何在Objective-C中迭代一个简单的JSON对象?

  17. 17

    迭代JSON数组对象

  18. 18

    像在C#中的foreach一样在json数组中进行迭代

  19. 19

    对数组的引用与C ++中的数组名称完全相同吗

  20. 20

    在 C 中通过数组名称和指针访问二维数组元素

  21. 21

    如何在 Python 中迭代 json 对象?

  22. 22

    PostgreSQL 中 json 数组元素的迭代

  23. 23

    如何在Android Studio中解析没有数组名称的Json

  24. 24

    如何从JSON中删除第一个数组名称

  25. 25

    使用包含对象中的各个属性转换 JSON 数组中的名称-值对数组

  26. 26

    将指针(数组名称)传递给C / C ++中的函数

  27. 27

    如何在Angular中的json对象内迭代数组值

  28. 28

    迭代嵌套 json 中的所有值

  29. 29

    C ++中通过右值引用(&&)进行迭代的迭代器

热门标签

归档