C# 在C中编辑JSON文件#
我试图编辑一个JSON文件来附加一个值。然而,我找不到一种方法来获得预期的结果。鉴于以下情况:C# 在C中编辑JSON文件#,c#,json,json.net,C#,Json,Json.net,我试图编辑一个JSON文件来附加一个值。然而,我找不到一种方法来获得预期的结果。鉴于以下情况: { "First": "1", "Second": "2", "A_lot": [ { "Address":"Str" }, { "Fruits"
{
"First": "1",
"Second": "2",
"A_lot": [
{
"Address":"Str"
},
{
"Fruits" : [ "apple", "orange" ],
"colors": : []
}
],
"last": "end
}
我想添加一个名为香蕉的水果和我的JSON来查看
{
"First": "1",
"Second": "2",
"A_lot": [
{
"Address":"Str"
},
{
"Fruits" : [ "apple", "orange", "banana" ],
"colors:" : []
}
],
"last": "end
}
我在网上搜索过,但找不到任何相关信息。
当我尝试运行此操作时:
var myjson = File.ReadAllText(pathtojson);
JObject newDeploymentProfileDocument = JObject.Parse(myjson);
var deploymentProperties = newDeploymentProfileDocument["A_lot"][1];
var myFruit = "banana";
deploymentProperties["Fruits"].AddAfterSelf(myFruit);
File.WriteAllText(myjson, newDeploymentProfileDocument.ToString());
我得到以下错误:
Newtonsoft.Json.JsonException:'Newtonsoft.Json.Linq.JProperty不能有多个值
由于我对C#还是新手,更不用说C#和json文件了,你能告诉我我缺少什么吗?提前感谢您发送的JSON格式似乎不正确。如果你的意思是这样的:
...
var deploymentProperties = (JArray)newDeploymentProfileDocument["A_lot"][0]["Fruits"];
var myFruit = "banana";
deploymentProperties.Add(myFruit);
...
{
“第一”:“1”,
“第二”:“2”,
“很多”:[
{
“地址”:“Str”,
“水果”:[“苹果”、“橘子”],
“颜色”:[]
}
],
“最后”:“结束”
}
正如其他人在评论中提到的,只需这样做:
...
var deploymentProperties = (JArray)newDeploymentProfileDocument["A_lot"][0]["Fruits"];
var myFruit = "banana";
deploymentProperties.Add(myFruit);
...
已编辑
如果不想更改JSON结构,可以使用以下方法:
var deploymentProperties = (JArray)newDeploymentProfileDocument["A_lot"][1]["Fruits"];
var myFruit = "banana";
deploymentProperties.Add(myFruit);
将
deploymentProperties[“Fruits”]
转换为JArray
,并使用Add(…)
代替addafterelf(…)
除了@Selvin的注释之外,您还可以执行此操作来转换并调用Add
(deploymentProperties[“Fruits”]作为JArray)。添加(myFruit)代码>@E.Shcherbo有了这个,它就像一个符咒。谢谢大家。Kudos为什么格式不正确?问题中的JSON与您的完全相同。它的格式正确@E.Shcherbo,请说出我的观点。它帮助我解决了这个问题,并获得了更好的理解。不过,感谢您的回复,我感谢您的努力!:)实际上不是我,我做了这个,我只是添加了一些关于如何进行强制转换的注释。我的意思是数组中有两个不同的对象。在主数组A_lot
中,索引0包含{Address}
,索引1包含{Fruits,colors}
。