gpt4 book ai didi

c# - 将复杂的json反序列化为类似字典的结构

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:07 24 4
gpt4 key购买 nike

嗨,我有一个 json 文件。我可以修改。但我需要通过它的名字访问。我需要像这样访问它

var result = sitelang.brands["en"] ;      // or
var result = sitelang.["brands"]["en"] ;

我是否让它易于理解?我对错误感到抱歉。
比你提前。
还有祝你好运!!与您的项目。

EDİT 真正的json文件

{
"Brands": [
{
"en": "Brands",
"tr": "Markalar",
"de": "Marken",
"bg": "Производител",
"el": "μάρκες",
"uk": "бренди",
"nl": "Merken",
}
],
"Products": [
{
"en": "Products",
"tr": "Ürünler",
"de": "Produkte",
"bg": "Продукти",
"el": "προϊόντα",
"uk": "продукти",
"nl": "producten",
}
],
"Search_Results": [
{
"en": "Arama Sonuçları",
"tr": "Search Results",
"de": "Suchergebnisse",
"bg": "Резултати от търсенето",
"el": "Αποτελέσματα Αναζήτησης",
"uk": "Результати пошуку",
}
],
}

最佳答案

您可以使用 Json.NET在不提前声明类的情况下解析 JSON,然后使用 LINQ 将其转换为字典:

var root = (JObject) JsonConvert.DeserializeObject(json);
var brands = root["Brands"]
.AsJEnumerable()
.First()
.AsJEnumerable()
.Cast<JProperty>()
.ToDictionary(j => j.Name, j => j.Value);

要查找特定品牌的翻译,只需使用字典即可​​:

var translatedName = brands["en"];

"Brands" 字符串替换为 "Product""Search_Results" 以创建其他两个词典。

从您的评论中我可以了解到您有很多翻译。在这种情况下,您可以创建字典字典:

var root = (JObject) JsonConvert.DeserializeObject(json);
var dictionary = root
.AsJEnumerable()
.Cast<JProperty>()
.ToDictionary(
j => j.Name,
j => j.Value
.AsJEnumerable()
.First()
.AsJEnumerable()
.Cast<JProperty>()
.ToDictionary(k => k.Name, k => k.Value)
);

然后像这样得到翻译后的名字:

var translatedName = dictionary["Brands"]["tr"];

关于c# - 将复杂的json反序列化为类似字典的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com