繁体   English   中英

无法将json反序列化为Dictionary <string, List<Purchase> &gt;

[英]Can not deserialize json to Dictionary<string, List<Purchase>>

我无法在C#中将json反序列化为Dictionary<string, List<Purchas>>

这是我的.json

{
  "Ukraine": {
    {
      "Credits": 500,
      "Name": "Clever goat",
      "Price": {
        "Amount": 100,
        "Currency": "UAH"
      }
    },
    {
      "Credits": 1000,
      "Name": "Smart hare",
      "Price": {
        "Amount": 190,
        "Currency": "UAH"
      }
    }
  },

  "USA": {
    {
      "Credits": 500,
      "Name": "Clever goat",
      "Price": {
        "Amount": 10,
        "Currency": "USD"
      }
    },
    {
      "Credits": 1000,
      "Name": "Smart hare",
      "Price": {
        "Amount": 19,
        "Currency": "USD"
      }
    }
  }
}

这是我的Purchase课程:

public class Price
{
    public int Amount { get; set; }
    public string Currency { get; set; }
}

public class Purchase
{
    public int Credits { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
}

这是我试图反序列化的方法:

var countryToPurchases = JsonConvert.DeserializeObject<Dictionary<string, List<Purchase>>>(dataJSON);

这是我得到的错误:

JsonReaderException:无效的属性标识符字符:{。 路径“乌克兰”,第3行,位置4。Newtonsoft.Json.JsonTextReader.ParseProperty()

我在这里想念什么?

您在这里有两个问题:

  1. Json无效。 应该有数组,但没有。
    有效的json如下所示:
[
  {
    "Ukraine": [
      {
        "Credits": 500,
        "Name": "Clever goat",
        "Price": {
          "Amount": 100,
          "Currency": "UAH"
        }
      },
      {
        "Credits": 1000,
        "Name": "Smart hare",
        "Price": {
          "Amount": 190,
          "Currency": "UAH"
        }
      }
    ]
  },
  {
    "USA": [
      {
        "Credits": 500,
        "Name": "Clever goat",
        "Price": {
          "Amount": 10,
          "Currency": "USD"
        }
      },
      {
        "Credits": 1000,
        "Name": "Smart hare",
        "Price": {
          "Amount": 19,
          "Currency": "USD"
        }
      }
    ]
  }
]
  1. Price属性应为Price类型,而不是int类型。
public class Purchase
{
    public int Credits { get; set; }
    public string Name { get; set; }
    public Price Price { get; set; }
}

请检查此json,看看是否可行:

 {
 "Ukraine": {
  "Credits": 500,
  "Name": "Clever goat",
  "Price": {
   "Amount": 100,
   "Currency": "UAH"
 }
},
 "USA": {
  "Credits": 500,
  "Name": "Clever goat",
  "Price": {
    "Amount": 10,
    "Currency": "USD"
  }
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM