我有一个Json结构,见下面的代码。
"attributes": {
"13448": {
"id": 13448,
"name": {
"sv": "H\u00f6jd",
"en": "Length",
"nb": "Lengde",
"de": "",
"da": "L\u00e6ngde",
"fi": "Pituus"
},
"value": {
"sv": "Sanderson",
"en": "Sanderson",
"nb": "Sanderson",
"de": null,
"da": "Sanderson",
"fi": "Sanderson"
}
},
"13910": {
"id": 13910,
"name": {
"sv": "H\u00f6jd",
"en": "Length",
"nb": "Lengde",
"de": "",
"da": "L\u00e6ngde",
"fi": "Pituus"
},
"value": {
"sv": "50s Collection",
"en": "50s Collection",
"nb": "50s Collection",
"de": null,
"da": "50s Collection",
"fi": "50s Collection"
}
}
}
我想序列化为一个自定义对象,我只希望将 name 的值作为字典中的键。 并将值存储为该字典中的值。
Key | Value | -------------------- H\u00f6jd|Sanderson| Length |Sanderson|
所以我的代码目前是:
foreach(var item in obj["attributes"])
{
var attribute = item.First["name"].ToObject<ArticleAttributes>();
var attribute = item.First["value"].ToObject<ArticleAttributes>();
}
我的ArticleAttributes类看起来像:
public class ArticleAttributes
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("value")]
public string value { get; set; }
}
答案 0 :(得分:1)
如果不为特定情况编写 json转换器,最接近的是:
var res = JsonConvert.DeserializeObject<RootObject>(json);
public class Item
{
public int Id { get; set; }
public Dictionary<string,string> Name { get; set; }
public Dictionary<string, string> Value { get; set; }
}
public class RootObject
{
public Dictionary<string, Item> Attributes { get; set; }
}
您可以进一步处理结果。
var finalres = res.Attributes
.ToDictionary(
x => x.Value.Id,
x => x.Value.Value.Keys
.ToLookup(y => x.Value.Name[y], y => x.Value.Value[y]));
现在您可以将其用作:
var val = finalres[13448]["Lengde"].FirstOrDefault();