反序列化具有以数字开头的某个属性名称的json

时间:2014-06-14 09:29:43

标签: c# json.net

JSON数据看起来像这样

[
    {
        "market_id": "21",
        "coin": "DarkCoin",
        "code": "DRK",
        "exchange": "BTC",
        "last_price": "0.01777975",
        "yesterday_price": "0.01770278",
        "change": "+0.43",
        "24hhigh": "0.01800280",
        "24hlow": "0.01752015",
        "24hvol": "404.202",
        "top_bid": "0.01777975",
        "top_ask": "0.01790000"
    }
]

请注意这24个高度,24hhlow和24hvol的3个属性 你是如何为此而上课的。顺便提一下,我需要所有这些属性,而不仅仅是我提到的那3个属性。

2 个答案:

答案 0 :(得分:20)

您应该使用JSON.NET或类似的库来提供一些更高级的反序列化选项。使用JSON.NET,您只需添加JsonProperty属性并指定出现在结果JSON中的自定义名称。这是一个例子:

   public class MyClass
   {
        [JsonProperty(PropertyName = "24hhigh")]
        public string Highest { get; set; }
        ...

现在反序列化:

    string jsonData = ...    
    MyClass deserializedMyClass = JsonConvert.DeserializeObject<MyClass>(jsonData);

答案 1 :(得分:2)

对于.NET Core 3.0及更高版本,您现在可以使用System.Text.Json命名空间。如果您使用的是:

public class MyClass
{
    ...
    [JsonPropertyName("24hhigh")]
    public string twentyFourhhigh { get; set; }
    ...
}

您可以使用JsonPropertyName属性。