C# 无法使用字符串值更新JSON节点

C# 无法使用字符串值更新JSON节点,c#,.net,json,json.net,C#,.net,Json,Json.net,我有一个JSON文件和节点,它看起来像这样 "my_location": [ { "my_address_type": "ZZZ", //changed "my_address-street": "601 XX street", //changed "my_address-suburb": "XXX", //changed "my_address-postcode": "XX", //changed "m

我有一个JSON文件和节点,它看起来像这样

"my_location": [
      {
        "my_address_type": "ZZZ", //changed
        "my_address-street": "601 XX street", //changed
        "my_address-suburb": "XXX", //changed
        "my_address-postcode": "XX", //changed
        "my_address-state": "XX" //changed
      }
    ]
我有一个字符串(比如string2)值,如下所示

"    {
    "my_address_type": "AAA",
    "my_address-street": "601 XX street", 
    "my_address-suburb": "XXX",
    "my_address-postcode": "XX",
    "my_address-state": "XX"
  },{
    "my_address_type": "BBB", //changed
    "my_address-street": "601 XX street",
    "my_address-suburb": "XXX",
    "my_address-postcode": "XX",
    "my_address-state": "XX"
}"
"my_location": [
"    {
"my_address_type": "AAA",
"my_address-street": "601 XX street", 
"my_address-suburb": "XXX",
"my_address-postcode": "XX",
"my_address-state": "XX"
 },{
"my_address_type": "BBB", //changed
"my_address-street": "601 XX street",
"my_address-suburb": "XXX",
"my_address-postcode": "XX",
"my_address-state": "XX"
}"
]
请参阅上面字符串中的双qoutes。我的要求是需要将My_location节点中的值更新/替换为新字符串(此处为string2)

我使用下面的代码来更新JSONNode

jsonObj[//node of my_location]= string2
我在这里感到震惊,因为更新后的全部内容如下所示

"    {
    "my_address_type": "AAA",
    "my_address-street": "601 XX street", 
    "my_address-suburb": "XXX",
    "my_address-postcode": "XX",
    "my_address-state": "XX"
  },{
    "my_address_type": "BBB", //changed
    "my_address-street": "601 XX street",
    "my_address-suburb": "XXX",
    "my_address-postcode": "XX",
    "my_address-state": "XX"
}"
"my_location": [
"    {
"my_address_type": "AAA",
"my_address-street": "601 XX street", 
"my_address-suburb": "XXX",
"my_address-postcode": "XX",
"my_address-state": "XX"
 },{
"my_address_type": "BBB", //changed
"my_address-street": "601 XX street",
"my_address-suburb": "XXX",
"my_address-postcode": "XX",
"my_address-state": "XX"
}"
]
因此,系统将其视为字符串,而不是值数组。任何帮助都将不胜感激

我相信用一条简单的线就可以做到这一点。但无法破解它。再次感谢你的帮助

C代码如下所示

string RequestData = File.ReadAllText("UpdatedRecord.json");
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(RequestData);
jsonObj[allNode[0]][allNode[1]][0][allNode[2]][0]=string2
期望输出:

我希望得到以下所需的输出

请注意,双引号“已删除”

"my_location": [
// " - WISH THIS IS REMOVED
    {
"my_address_type": "AAA",
"my_address-street": "601 XX street", 
"my_address-suburb": "XXX",
"my_address-postcode": "XX",
"my_address-state": "XX"
 },{
"my_address_type": "BBB", //changed
"my_address-street": "601 XX street",
"my_address-suburb": "XXX",
"my_address-postcode": "XX",
"my_address-state": "XX"
}
// " - WISH THIS IS REMOVED
]

而不是创建
动态
对象

dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(RequestData);
像这样为JSON创建一个类

public class MyLoc
{
    public string my_address_type { get; set; }
    public string my_address-street { get; set; }
    public string my_address-suburb { get; set; }
    public string my_address-postcode { get; set; }
    public string my_address-state { get; set; }
}
然后可以反序列化JSON

List<MyLoc> jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyLoc>>(RequestData);

然后将对象序列化回JSON以查看所需的输出。

共享C#代码json@GaurangDave-谢谢,已经添加了代码。什么是
allNode
,它是如何初始化的?您的问题还不清楚,能否共享所需的输出?@JamesWhyte-allNode是字符串数组,它包含路径to到达JSON中的特定节点。在这里,到达my_位置。它是从电子表格传递过来的。它不是空的,并且包含一个值。感谢您的帮助。有没有办法将整个字符串转换为MyLoc实例的数组?我希望我能理解您将整个字符串转换为MyLoc的数组的意思。issue是,提供的JSON不是有效的JSON,否则,仅复制粘贴就可以帮助您。