c# - 无法将 json 反序列化为字典>
问题描述
我无法Dictionary<string, List<Purchas>>
在 C# 中将 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"
}
}
}
}
这是我的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()
我在这里想念什么?
解决方案
你在这里有两个问题:
- 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"
}
}
]
}
]
- 该
Price
属性应该是 typePrice
,而不是int
。
public class Purchase
{
public int Credits { get; set; }
public string Name { get; set; }
public Price Price { get; set; }
}
推荐阅读
- html - 如何增加下拉项的悬停宽度
- ios - 开发iOS框架时如何在WKWebView中加载本地HTML文件
- istio - 请解释 Kiali 指标的含义?例如 mops、mB - 见下图 & kiali 作为 Istio v1.1.1 的一部分安装
- r - 在 R 中解析 10 GB XML 文件
- javascript - ParameterDocID 仅获得我的 DocumentUniqueID 的 6 位数字
- python - 用python计算分数的函数
- javascript - 如何从几个可能的 URL 参数之一中获取值?
- python - 是否可以在没有任何导入模块/库的情况下在 Python 中模拟按键
- google-bigquery - BigQuery 标准 SQL - 是否有任何解决方法无法在视图中保存 UDF?
- c# - 在使用 ASP.Net 和 C# 的代码中将数据 URI 设置为 asp:Image