将 JSON 数据解析为自定义对象 C#



我有一个Json结构,请参见下面的代码。

"attributes": {
"13448": {
"id": 13448,
"name": {
"sv": "Hu00f6jd",
"en": "Length",
"nb": "Lengde",
"de": "",
"da": "Lu00e6ngde",
"fi": "Pituus"
},
"value": {
"sv": "Sanderson",
"en": "Sanderson",
"nb": "Sanderson",
"de": null,
"da": "Sanderson",
"fi": "Sanderson"
}
},
"13910": {
"id": 13910,
"name": {
"sv": "Hu00f6jd",
"en": "Length",
"nb": "Lengde",
"de": "",
"da": "Lu00e6ngde",
"fi": "Pituus"
},
"value": {
"sv": "50s Collection",
"en": "50s Collection",
"nb": "50s Collection",
"de": null,
"da": "50s Collection",
"fi": "50s Collection"
}
}
}

我想序列化为一个自定义对象,我只想将名称中的值作为字典中的键。 并将值存储为该字典中的

钥匙 |价值 | -------------------- H\u00f6jd|桑德森| 长度 |桑德森|

所以我的代码 i 目前:

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; }
}

如果不为您的特定情况编写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();

最新更新