【问题标题】:JSON to model with dynamic numeric property [duplicate]JSON以动态数字属性建模[重复]
【发布时间】:2019-09-06 15:09:54
【问题描述】:

我收到了一个 JSON,其中包含动态数字对象名称。我不确定如何将其转换为模型。

我试图创建一个模型结构,但我没有设法解决它。

我的 JSON 如下所示:

{
    "data_positions": {
        "695243": { <- this is a dynamic number which can be different for another request
            "id": "695243",
            "name": "Gothenburg",
            "numberOfPos": "59865",
            "partners": {
                "9658265": {
                    "id": "9658265",
                    "partner": {
                        "id": "1",
                        "name": "FirstOne"
                    }
                },
                "2365895": { <- this is a dynamic number which can be different for another request
                    "id": "2365895",
                    "participant": {
                        "id": "2",
                        "name": "SecondOne",
                    }
                },
                "1478563": { <- this is a dynamic number which can be different for another request
                    "id": "1478563",
                    "participant": {
                        "id": "3",
                        "name": "ThirdOne"
                    }
                }
            }
        }
    }
}

我创建的模型如下所示:

public class Data
{
    [JsonProperty("data_positions")]
    public DataPositions DataPositions { get; set; }
}

public class Data
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("numberOfPos")]
    public int NumberOfPos { get; set; }

    [JsonProperty("partners")]
    public Partner[] Partners { get; set; }
}

public class Partner
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("numberOfPos")]
    public int NumberOfPos { get; set; }
}

所以我不确定如何从data_positions2365895 下的对象695243 中获取数据,partners 中的1478563

预期的结果是一个可以从上面提供的 JSON 中获取数据的模型。

感谢所有帮助。

【问题讨论】:

    标签: c# json model


    【解决方案1】:

    您可以做的最简单的事情就是使用Dictionary&lt;,&gt;,例如。 Dictionary&lt;string, DataPosition&gt;.

    假设您在模型中打错了字,第二类应命名为 DataPosition 并忽略 DataPositions 的结构,模型将如下所示:

    public class Data
    {
        [JsonProperty("data_positions")]
        public Dictionary<string, DataPosition> DataPositions { get; set; }
    }
    
    public class DataPosition
    {
        [JsonProperty("id")]
        public int Id { get; set; }
    
        [JsonProperty("name")]
        public string Name { get; set; }
    
        [JsonProperty("numberOfPos")]
        public int NumberOfPos { get; set; }
    
        [JsonProperty("partners")]
        public Dictionary<string, Partner> Partners { get; set; }
    }
    
    public class Partner
    {
        [JsonProperty("id")]
        public int Id { get; set; }
    
        [JsonProperty("name")]
        public string Name { get; set; }
    
        [JsonProperty("numberOfPos")]
        public int NumberOfPos { get; set; }
    }
    

    您可以通过键访问字典中的条目,使用.First() 或遍历它们,具体取决于数据。

    PS。 Partner 类型的结构与 JSON 不匹配,您可能需要修复它。

    【讨论】:

    • 它现在可以工作了,谢谢,但我必须在Partners dictionaryPartner 之间做一个中间步骤才能获取Partner data。还是我错过了你的回答?
    猜你喜欢
    • 2022-08-16
    • 2016-04-23
    • 1970-01-01
    • 2014-07-07
    • 2015-04-26
    • 2015-10-20
    • 2015-04-27
    • 2018-02-21
    • 1970-01-01
    相关资源
    最近更新 更多