Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中编辑JSON文件#_C#_Json_Json.net - Fatal编程技术网

C# 在C中编辑JSON文件#

C# 在C中编辑JSON文件#,c#,json,json.net,C#,Json,Json.net,我试图编辑一个JSON文件来附加一个值。然而,我找不到一种方法来获得预期的结果。鉴于以下情况: { "First": "1", "Second": "2", "A_lot": [ { "Address":"Str" }, { "Fruits"

我试图编辑一个JSON文件来附加一个值。然而,我找不到一种方法来获得预期的结果。鉴于以下情况:

{
   "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}