【发布时间】:2018-10-23 10:06:10
【问题描述】:
我在外部文件中有以下 JSON:
{
"Name": "Service Provider",
"Categories": [
{
"Name": "Identity",
"Mandatory": false
},
{
"Name": "Contat Information",
"Mandatory": false
},
{
"Name": "Service Fields",
"Mandatory": false
},
{
"Name": "Addresses",
"Mandatory": false
},
{
"Name": "Bank Accounts",
"Mandatory": false
}
]
}
如果我想替换,例如,“身份”类别在内存中看起来像这样:
{
"Name": "Identity",
"Mandatory": true,
...
}
我可以这样写:
JObject jObject = return JsonConvert.DeserializeObject<JObject>(File.ReadAllText(path));
// "GetNewIdentity()" gets a JObject representing the new "Identity" JSON shown above
jObject["Categories"][0] = GetNewIdentity();
问题是我在写代码的时候需要知道改什么类别。如果我只在运行时知道要更改哪个类别怎么办?
这就是为什么我想使用其Name 属性在数组中找到要替换的类别。我试过以下代码:
// "name" comes from a different place.
result["Categories"].Single(c => c["Name"].Equals(name)) = GetNewIdentity();
但是因为我试图将值分配给返回值而不是变量,所以我收到以下错误:
赋值的左边必须是变量、属性或 索引器
我还希望在替换后保留类别的顺序。我怎样才能做到这一点?
注意:
我没有或可以有代表 JSON 的 POCO 类。
【问题讨论】:
-
你有可以反序列化这个 JSON 的类吗?
-
Modifying JSON(第一个搜索结果)
-
“我怎样才能做到这一点?” - 究竟是什么?通常您会反序列化、更改值然后序列化 json。什么是输入数据?这个 json 是文件、字符串还是什么?更改值后应该是什么?
-
我肯定会去创建 POCO 课程,除非课程设计不合适
-
@Sinatr 请查看我对问题所做的更改,如果还不够清楚,请告诉我。