【问题标题】:Converting Json with dynamic property to C#将具有动态属性的 Json 转换为 C#
【发布时间】:2015-09-22 12:15:27
【问题描述】:

我在将此 json 转换为 c# 时遇到了很大的问题,因为保存我需要的所有数据的对象是一个动态属性,我不能像我一样定义一个保存所有属性值的类一直在做。示例 json 如下,从“144038410”对象中提取数据的任何想法?感谢您提供有关此问题的任何指导。

{
"result": {
    "144038410": {
        "icon_url": "W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVpMgCwRZrhyFY1OZ0v4CYfbKFzE6FY3tT0Gve6aY1lyeWN9SaN1gKyFN2I3hgUkVXHeDV78TC9V_vJLFhwPrXgeUf2ZpytoBgaXHiZCBWKDVt1K5J0cGAAdo",
        "icon_url_large": "W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVpMgCwRZrhyFY1OZ0v4CYfbKFzE6FY3tT0Gve6aY1lyeWN9SaN1gK1AV3Zu_01cXBiPUB7EVXNJ4tczLh1i8BQrEcDs0nt8Ch_Wc0cOCU67VqxbjdgUmzaQ3WoDEBb7J",
        "icon_drag_url": "",
        "name": "Kupu the Metamorpher",
        "market_hash_name": "Kupu the Metamorpher",
        "market_name": "Kupu the Metamorpher",
        "name_color": "D2D2D2",
        "background_color": "",
        "type": "Mythical Kupu Courier",
        "tradable": "1",
        "marketable": "1",
        "commodity": "0",
        "market_tradable_restriction": "7",
        "market_marketable_restriction": "7",
        "fraudwarnings": "",
        "descriptions": {
            "0": {
                "type": "html",
                "value": "All hail Kupu the Metamorpher!  Honest and forthright, Kupu with delivery your items in a most timely fashion.  Steadfast!",
                "app_data": ""
            }
        },
        "tags": {
            "0": {
                "internal_name": "unique",
                "name": "Standard",
                "category": "Quality",
                "color": "D2D2D2",
                "category_name": "Quality"
            },
            "1": {
                "internal_name": "Rarity_Mythical",
                "name": "Mythical",
                "category": "Rarity",
                "color": "8847ff",
                "category_name": "Rarity"
            },
            "2": {
                "internal_name": "courier",
                "name": "Courier",
                "category": "Type",
                "category_name": "Type"
            },
            "3": {
                "internal_name": "courier",
                "name": "Courier",
                "category": "Slot",
                "category_name": "Slot"
            },
            "4": {
                "internal_name": "DOTA_OtherType",
                "name": "Other",
                "category": "Hero",
                "category_name": "Hero"
            }
        },
        "classid": "144038410"
    },
    "success": true
}

}

【问题讨论】:

  • 我是用下面的方法弄的,谢谢大家的帮助。 JObject json = JsonConvert.DeserializeObject(jsonString); var asdf = 为什么[“结果”].First.First.ToObject();其中 POCO 是一个包含我需要的属性的类

标签: c# json asp.net-web-api dynamic-programming type-conversion


【解决方案1】:

您必须使用 JsonProperty 属性来装饰您的 Formats 属性,以告诉它如果名称不完全匹配会发生什么:

partial class result
{
    [JsonProperty("144038410")]
    public dynamic _144038410 {get; set;}
}

另见Using JsonConvert.DeserializeObject to deserialize Json to a C# POCO class

【讨论】:

  • 我知道你可以这样做,但问题是我有大约 5000 条记录,所以我必须为 5000 个不同的数字这样做?必须有更清洁的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 2017-08-27
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
相关资源
最近更新 更多