c# - 在 C# 中编辑 JSON 文件
问题描述
我正在尝试编辑 JSON 文件以附加一个值。但是,我找不到获得预期结果的方法。鉴于以下 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 格式似乎不正确。如果你的意思是这样的:
{
"First": "1",
"Second": "2",
"A_lot": [
{
"Address": "Str",
"Fruits": [ "apple", "orange" ],
"colors": []
}
],
"last": "end"
}
正如评论中提到的其他人一样,只需这样做:
...
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);
推荐阅读
- python - 将 python 脚本的输出读入 C 程序而不创建临时文件以在程序之间传递值
- angular - 角度 - 如何循环倒计时与当前时间
- java - Java 迭代器如何检测集合被修改为抛出 ConcurrentModificationException?
- android - 警报对话框中的可滚动布局,底部有一个按钮(使用约束布局)
- java - 注释内类的 SonarQube 自定义 Java 规则
- firebase - Flutter:Firebase 当前用户抛出错误“方法在 null 上调用”
- c# - Razor 页面 @functions 中的异步
- azure - Azure DevOps 发布管道:从变量组中检索 Key Vault Secret 的版本号
- python - 由于“mayavi 构建轮子失败”,无法使用 pip3 install 安装 mayavi/vtk,但在 virtualenv 上安装工作
- c++ - 可以在编译时隐式引用类名吗?