【问题标题】:Cannot deserialize a JSON object无法反序列化 JSON 对象
【发布时间】:2025-12-04 01:00:01
【问题描述】:

这是我的 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"
    }
]

这是我的课

public class Model_MarketStats
{
    [JsonProperty(PropertyName="market_id")]
    public string market_id { get; set; }
    [JsonProperty(PropertyName = "code")]
    public string code { get; set; }
    [JsonProperty(PropertyName = "exchange")]
    public string exchange { get; set; }
    [JsonProperty(PropertyName = "last_price")]
    public string last_price { get; set; }
    [JsonProperty(PropertyName = "yesterday_price")]
    public string yesterday_price { get; set; }
    [JsonProperty(PropertyName = "change")]
    public string change { get; set; }
    [JsonProperty(PropertyName = "24hhigh")]
    public string highest { get; set; }
    [JsonProperty(PropertyName = "24hlow")]
    public string lowest { get; set; }
    [JsonProperty(PropertyName = "24hvol")]
    public string volume { get; set; }
    [JsonProperty(PropertyName = "top_bid")]
    public string top_bid { get; set; }
    [JsonProperty(PropertyName = "top_ask")]
    public string top_ask { get; set; }
}

错误说

Newtonsoft.Json.JsonSerializationException:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“MintpalAPI.Model_MarketStats_Root”,因为该类型需要 JSON 对象(例如 {"name":"value"} ) 以正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化。 JsonArrayAttribute 也可以添加到类型中,以强制它从 JSON 数组中反序列化。

这是我反序列化 JSON 的方式

Model_MarketStats = JsonConvert.DeserializeObject<Model_MarketStats>(json);

【问题讨论】:

    标签: c# json json.net json-deserialization


    【解决方案1】:

    你的json是一个数组,使用

    var stats = JsonConvert.DeserializeObject<List<Model_MarketStats>>(json);
    

    【讨论】:

      【解决方案2】:

      您的数据是一个数组,因此,您需要将其反序列化为数组/列表。

      【讨论】:

        【解决方案3】:

        试试这个,它可以工作并且包含这个 使用 Newtonsoft.Json; 将json数据转换为字符串并试试这个

         Model_MarketStats obj = JsonConvert.DeserializeObject<Model_MarketStats>(jsonstring);
        

        else 将该 json 值转换为列表

         Model_MarketStats obj = JsonConvert.DeserializeObject<list<Model_MarketStats>>(jsonstring);
        

        【讨论】:

        • 那个 json ([{...}]) 是一个列表。您的代码(正如 OP 已经尝试过的那样)无法工作
        最近更新 更多