c# - 更改特定 JSON 值 (C#)
问题描述
假设我有一个如下所示的 JSON 文件:
[
{
"CheckName": "test2",
"Times": [
"0001-01-01T00:00:00",
"2019-02-27T09:29:39.5654213"
]
},
{
"CheckName": "test",
"Times": [
"0001-01-01T00:00:00",
"2019-02-27T09:29:39.574397"
]
}
]
我正在循环如下:
string Config = File.ReadAllText(@"C:\Scripts\Config.json");
dynamic ConfigFile = JsonConvert.DeserializeObject(Config);
foreach (var item in ConfigFile) {
string CurrentCheck = item.CheckName;
DateTime LastRun = item.Times[0];
DateTime NextRun = item.Times[1];
//Do stuff with the read values here
}
我需要更新 test2 的第一次值,然后,稍后在测试时更新它。但是,这个 JSON 文件中可能有 50 多个项目,我不知道我在文件中的位置,除了通过 foreach 循环(我正在读取 JSON,然后循环遍历它以读取我需要的值,但我需要编写更改)。是否可以在遇到每个特定值时更新它,然后将 JSON 重写回磁盘,同时保留其他值?
或者,我是否可能需要更改 JSON 的外观以简化此任务。
解决方案
您已将 JSON 反序列化为一个对象,在您的情况下称为 ConfigFile。
您可以对动态对象 ConfigFile 进行更改,然后重新序列化以再次获取 JSON 字符串。
您可能会发现将 JSON 反序列化为对象更容易,而不是使用动态迭代它们,这尤其有助于处理嵌套对象,而不会让您的代码变得非常混乱。
您不知道自己在循环中的位置这一事实并不重要,因为对象(包括嵌套对象)都是引用类型。这意味着尽管您创建了一个名为 的东西item
,但它仍然只是对该项目的引用,因此在一个地方修改它会在所有地方修改它。如果这是有道理的。
推荐阅读
- sql-server - 为什么这个进程运行两次?
- javascript - Recaptcha v2 在重置并且其容器元素从 DOM 中删除时会引发错误
- node.js - Mongoose 与 MongoDB 验证
- nginx - 如何在 Kubernetes 中配置 ingress-nginx?
- kubernetes - 具有新 etcd 卷的新 master 未加入集群
- swift - 选择时更改 uicollectionviewcell 背景,同时将其他单元格背景变为清晰
- javascript - Magento 2 如何添加自定义验证规则并应用它们?
- excel - 宏代码不会等到从 SAP 加载文件
- assembly - MIPS/Assembly:执行指令后如何手动查找寄存器值?
- php - 在 PHP 中的表单输入名称中将变量与字符串组合