[英]How to override values in JObject
我一直在尝试覆盖我的 JObject 中的值(我从 web 应用程序中接收它,所以它可以不同)。 我尝试使用 for 循环,但我不知道如何使用 JObject 进行迭代。 Foreach 没用,因为我无法编辑 JObject 中的值。
这是我的尝试:
public JObject TranslateJson(string jsonString, LanguageCharset languageCharset)
{
JObject json = JObject.Parse(jsonString);
for ( int i = 0; i > json.Count; i++)
{
json[i].Value = "test"; //Compiler Error CS1656
}
return json;
}
#更新1
public JObject TranslateJson(string jsonString, LanguageCharset languageCharset)
{
JObject json = JObject.Parse(jsonString);
foreach (var x in json)
{
json[x.Key] = "test";
}
return json;
}
#更新2
json 的一部分:
{
"common": {
"appName": "[App name] Web",
"other": "other",
"others": "others",
"dateRange": {
"start": "Date from",
"end": "Date to"
},
"sidebar": {
"dashboard": "[App name] dashboard",
"violations": {
"list": "Infringement list",
"timeline": "Activities and infringements"
},
"drivers": "Driver list",
"profile": "Profile",
"settings": "Settings",
"logout": "Sign out"
},
"tariff": {
"name": {
"CZ": "Czech tariff",
"RO": "Romanian tariff",
"DE": "German tariff",
"GB": "British tariff",
"LT": "Lithuanian tariff",
"DK": "Danish tariff",
"PL": "Polish tariff",
"BE": "Belgian tariff",
"CH": "Swiss tariff",
"FR": "French tariff",
"LU": "Luxembourgish tariff",
"SE": "Swedish tariff",
"HU": "Magyar tariff"
[..] (more nestings)
#更新 3
示例输入 json:
{
"weapons":
{
"axe": "axe",
"sword": "sword" },
"tools":
{
"saw": "saw"
}
}
示例 output:
{
"weapons":
{
"axe": "translated",
"sword": "translated" },
"tools":
{
"saw": "translated"
}
}
为什么只翻译? 因为当我可以覆盖 json 结构的任何嵌套内的值时,我只需调用我的 transtalion function。
下面是一个demo,大家可以看看。
var jsonString = @"
{ items: [
{
""name"": ""1111"",
""name2"": ""value2"",
""type"": ""2222""
},
{
""name"": ""33333"",
""name2"": ""value2"",
""type"": ""444444""
}
] }";
JObject json = JObject.Parse(jsonString);
foreach (JObject o in json["items"].AsEnumerable())
{
foreach (var x in o)
{
o[x.Key] = "test";
}
}
测试结果:
我尝试过这样的事情:
public string TranslateJson(string jsonString, LanguageCharset languageCharset)
{
JToken json = JToken.Parse(jsonString);
foreach (var element in json)
{
if (element is JObject)
{
return "object";
} else if (element is JArray)
{
return "array";
}
}
return "you fckd up";
}
它总是返回“you fckd up”,但我想得到与它不同的东西,但不知道如何实现它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.