当前位置: 首页 > 知识库问答 >
问题:

反序列化多个JSON变量时遇到困难

南宫勇军
2023-03-14

我写了下面的代码,它确实反序列化和解析了一个JSON变量,但是,它不能与多个JSON变量一起工作

API检索的JSON具有如下类似的变量,但是,第一个分支有一个总是变化的数字,比如value_abc_########,其中######是一个总是不同的数字,所以我不知道这个分支得到了什么输出。

这是API调用返回的JSON结构:

{
  "value_abc_154649": {
    "Name": "",
    "Address": "",
    "Phone": "",
  },
  "value_abc_616447": {
    "Name": "",
    "Address": "",
    "Phone": "",
  },
  "value_abc_912374": {
    "Name": "",
    "Address": "",
    "Phone": ""
  }
}

虽然这是我编写的代码,但如果JSON只有1个分支结果,它可以正常工作,但如果是倍数,它就不行了

    class getVariables
    {   
        public string Name { get; set; }
    }

    class fetch
    {
        var client = new System.Net.WebClient();
        string json = client.DownloadString(API_URL);
        var result = JsonConvert.DeserializeObject<getVariables>(json);
        Console.Write("\nName: " + result.Name); //this just print an empty value

        /*I also tried this structure but the for loop doesn't work
        for (result)
        {
            Console.Write("\nName: " + result.Name);
        }*/
    }

共有1个答案

周兴朝
2023-03-14

类并不代表您的json结构。尝试反序列化为dictionary :

        var json = @"{
        ""value_abc_154649"": {
            ""Name"": """",
    ""Address"": """",
    ""Phone"": """",
  },
  ""value_abc_616447"": {
            ""Name"": """",
    ""Address"": """",
    ""Phone"": """",
  },
  ""value_abc_912374"": {
            ""Name"": """",
    ""Address"": """",
    ""Phone"": """"
  }
    }";

    var result = JsonConvert.DeserializeObject<Dictionary<string, getVariables>>(json);
    // foreach(var r in result.Values)
    // {
    //    Console.Write("\nName: " + r.Name);
    //}
    // or to print with keys: 
    foreach(var kvp in result)
    {
        Console.WriteLine($"Key: {kvp.Key}, Name: {kvp.Value.Name}");
    }
 类似资料:
  • 问题内容: 我有一个这样的模型: 例如,我从远程获取以下JSON: 当我反序列化此JSON时,and 变量将获得正确的值。但是,我不想解释变量的内容。相反,我希望它是以下字符串: 之后,我将自己解释。我如何获得这个值? 问题答案: Jackson问题596是为原始问题中描述的所需功能而创建的。如果要实施,请投票。 当前可用的解决方案是实现自定义反序列化处理。

  • 问题内容: 我正在使用大猩猩 websocket,并且正在计划使用json进行序列化/反序列化。 假设我有这样的结构来接收传入的消息: 和 大猩猩提供接收传入的消息。传入的消息可以是Foo或Bar,但是我不能使用和收听其他消息,这很混乱。我想要像javascript 这样的东西。如果接收到Foo,则如何处理传入消息,然后将其存储到结构中;如果接收到Bar,则将其存储到结构中? 我正在解决方案正在使

  • 本文向大家介绍golang中json反序列化可能遇到的问题,包括了golang中json反序列化可能遇到的问题的使用技巧和注意事项,需要的朋友参考一下 前言 在golang中,当浮点数超过一定数值的时候,golang会把它弄成科学计数法的形式进行显示(好像只要大于七位数就变成科学计数法了) 而在日常开发中,我们经常遇到这样一个问题,就是要反序列化前端传递来的json,因为数据结构未知,所以我们便会

  • 问题内容: 我正在针对返回JSON数据的第三方API进行编程,但是格式可能有点奇怪。某些属性可以是一个对象(包含一个Id属性),也可以是一个字符串(它是该对象的ID)。例如,以下两个都是有效的: 和 我正在尝试使用JSON.net将其反序列化为强类型类,但到目前为止运气还不足。我最好的主意是将其序列化为两个属性,一个为字符串,另一个为对象,并为每个属性使用自定义JsonConverter以允许变量

  • 问题内容: 我有以下形式的JSON字符串: 我正在尝试使用带有以下代码段的C#.NET反序列化器DataContractJsonSerializer反序列化JSON 现在,由于JSON数组是变量类型的数组,所以我不知道对象X应该是哪种类型 如果我的弦是 我可以用这个: 那对我有用。我想知道是否有任何方法可以反序列化变量类型JSON数组? 问题答案: 您可以使用Json.NET做到这一点。 JArr

  • 问题内容: 我很好奇序列化和反序列化的方式。我使用关键字“ json”和“ tuple”进行搜索,但找不到所需的内容。 问题答案: 我通过和Json.net进行测试,测试代码如下。结果显示可序列化和可反序列化。因此,我可以在应用程序中使用它们。 测试代码 注释 在将序列化到字符串{“项目1”:“一”,“项目2”:“嘻嘻”,“项目3”:真正},并且它可以被反序列化回类型。