使用未知对象名称反序列化JSON

rus

我正在尝试反序列化来自API的JSON响应。JSON如下所示(MAC地址和位置已更改):

{
"body" : [{
        "_id" : "da:87:54:26:53:97",
        "place" : {
            "location" : [-23.334961, 47.398349],
            "altitude" : 30,
            "timezone" : "Europe\/London"
        },
        "mark" : 3,
        "measures" : {
            "f2:bf:a7:6f:e7:e8" : {
                "res" : {
                    "1469997248" : [20.4, 66]
                },
                "type" : ["temperature", "humidity"]
            },
            "42:b7:48:59:7c:4b" : {
                "res" : {
                    "1469997263" : [1016.7]
                },
                "type" : ["pressure"]
            }
        },
        "modules" : ["f2:bf:a7:6f:e7:e8"]
    }
],
"status" : "ok",
"time_exec" : 0.034152030944824,
"time_server" : 1469997417
}

问题是措施块。由于对象的名称正在更改,因此我不知道如何将其正确反序列化为C#对象。我在这里发现了类似的问题,即使用字典的解决方案,但是,如果以这种方式尝试,我只会得到空目录。

这是我的反序列化方法:

APIResponse apiResponse = JsonConvert.DeserializeObject<APIResponse>(await content.ReadAsStringAsync());

这是APIResponse类:

public class APIResponse
{
    public Body[] body { get; set; }
    public string status { get; set; }
    public float time_exec { get; set; }
    public int time_server { get; set; }
}

public class Body
{
    public string _id { get; set; }
    public Place place { get; set; }
    public int mark { get; set; }
    public Measures measures { get; set; }
    public string[] modules { get; set; }
}

public class Place
{
    public float[] location { get; set; }
    public float altitude { get; set; }
    public string timezone { get; set; }
}

public class Measures
{
   public Dictionary<string, SingleModule> singlemodules{ get; set; }
}

public class SingleModule
{
    public Res res { get; set; }
    public string[] type { get; set; }
}

public class Res
{
    public MeasuredData measuredData { get; set; }
}
public class MeasuredData
{
    public float[] values { get; set; }
}

有什么方法可以轻松地适当地反序列化这些措施吗?

乔恩·斯基特

看来您应该可以摆脱Measures课堂教学。而是直接将字典放入您的Body班级:

public class Body
{
    public string _id { get; set; }
    public Place place { get; set; }
    public int mark { get; set; }
    public Dictionary<string, SingleModule> measures { get; set; }
    public string[] modules { get; set; }
}

另外,我强烈建议为您的属性遵循.NET命名约定,并使用[JsonProperty("measures")]etc指示Json.NET如何将属性转换为JSON。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反序列化具有对象 ID 作为对象名称的 JSON 对象列表

来自分类Dev

使用Json.net通过一些更改的对象名称反序列化Json

来自分类Dev

使用Jackson反序列化包装在具有未知属性名称的对象中的JSON

来自分类Dev

在一个类中使用多个可能的对象名称反序列化JSON字符串

来自分类Dev

在 C# 中反序列化不断变化的 JSON 对象名称

来自分类Dev

当对象数量未知时,反序列化Json

来自分类Dev

JAX-RS / Jackson-使用未知的根元素名称反序列化JSON?

来自分类Dev

将JSON对象名称/值对反序列化为数组的元素

来自分类Dev

使用未知字段反序列化JSON

来自分类Dev

使用未知字段反序列化JSON

来自分类Dev

Json.Net使用索引作为名称反序列化JSON对象

来自分类Dev

在属性名称中使用点反序列化JSON

来自分类Dev

在属性名称中使用$反序列化JSON

来自分类Dev

使用Json.Net反序列化Json对象

来自分类Dev

如何使用Jackson将反序列化的JSON反序列化为忽略键的对象?

来自分类Dev

使用Json.NET反序列化复杂对象

来自分类Dev

无法使用Json.Net反序列化对象

来自分类Dev

使用ReadAsAsync <T>()反序列化复杂的Json对象

来自分类Dev

使用C#反序列化JSON(多个对象)

来自分类Dev

使用动态对象反序列化JSON

来自分类Dev

使用ReadAsAsync <T>()反序列化复杂的Json对象

来自分类Dev

使用JSON.net反序列化对象

来自分类Dev

反序列化和使用JSON对象

来自分类Dev

使用 GSON 反序列化 JSON 对象数组

来自分类Dev

如何使用Play的JSON序列化/反序列化动态字段名称

来自分类Dev

使用 JSON 忽略序列化和反序列化中的参数名称

来自分类Dev

如何在对象结构未知的情况下反序列化JSON对象

来自分类Dev

反序列化内部JSON对象

来自分类Dev

JSON转换反序列化对象

Related 相关文章

  1. 1

    反序列化具有对象 ID 作为对象名称的 JSON 对象列表

  2. 2

    使用Json.net通过一些更改的对象名称反序列化Json

  3. 3

    使用Jackson反序列化包装在具有未知属性名称的对象中的JSON

  4. 4

    在一个类中使用多个可能的对象名称反序列化JSON字符串

  5. 5

    在 C# 中反序列化不断变化的 JSON 对象名称

  6. 6

    当对象数量未知时,反序列化Json

  7. 7

    JAX-RS / Jackson-使用未知的根元素名称反序列化JSON?

  8. 8

    将JSON对象名称/值对反序列化为数组的元素

  9. 9

    使用未知字段反序列化JSON

  10. 10

    使用未知字段反序列化JSON

  11. 11

    Json.Net使用索引作为名称反序列化JSON对象

  12. 12

    在属性名称中使用点反序列化JSON

  13. 13

    在属性名称中使用$反序列化JSON

  14. 14

    使用Json.Net反序列化Json对象

  15. 15

    如何使用Jackson将反序列化的JSON反序列化为忽略键的对象?

  16. 16

    使用Json.NET反序列化复杂对象

  17. 17

    无法使用Json.Net反序列化对象

  18. 18

    使用ReadAsAsync <T>()反序列化复杂的Json对象

  19. 19

    使用C#反序列化JSON(多个对象)

  20. 20

    使用动态对象反序列化JSON

  21. 21

    使用ReadAsAsync <T>()反序列化复杂的Json对象

  22. 22

    使用JSON.net反序列化对象

  23. 23

    反序列化和使用JSON对象

  24. 24

    使用 GSON 反序列化 JSON 对象数组

  25. 25

    如何使用Play的JSON序列化/反序列化动态字段名称

  26. 26

    使用 JSON 忽略序列化和反序列化中的参数名称

  27. 27

    如何在对象结构未知的情况下反序列化JSON对象

  28. 28

    反序列化内部JSON对象

  29. 29

    JSON转换反序列化对象

热门标签

归档