在 C# 中更新 JSON 文件时遇到问题

Having trouble updating JSON File in C#

我在内容下面有一个 JSON 文件。

{
  "properties": {
    "workspaceId": "xxxx",
    "logs": [
      {
        "categoryGroup": "allLogs",
        "enabled": false,
        "retentionPolicy": {
          "enabled": false,
          "days": 0
        }
      }
    ],
    "logAnalyticsDestinationType": ""
  }
}

我正在尝试将对象 workspaceId 的值从“xxxx”更改为字符串 LAWorkspaceID 的实际值。我正在使用下面的代码但出现错误

System.Private.CoreLib: Exception while executing function: RAMP-VinnyLearn. Newtonsoft.Json: Accessed JObject values with invalid key value: 0. Object property name expected.

string LAWorkSpaceID = "NewValueForMyLAWorkspaceID";
string json = File.ReadAllText("DisableRequestBody.json");
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
jsonObj["properties"][0]["workspaceId"] = LAWorkSpaceID;
string output = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText("DisableRequestBody.json", output);

“属性”是一个对象而不是数组。

尝试替换

jsonObj["properties"][0]["workspaceId"]

jsonObj["properties"]["workspaceId"]

输出为

{
  "properties": {
    "workspaceId": "NewValueForMyLAWorkspaceID",
    "logs": [
      {
        "categoryGroup": "allLogs",
        "enabled": false,
        "retentionPolicy": {
          "enabled": false,
          "days": 0
        }
      }
    ],
    "logAnalyticsDestinationType": ""
  }
}

如果您使用的是动态类型,那么您也可以使用以下方法:

string LAWorkSpaceID = "NewValueForMyLAWorkspaceID";
string json = File.ReadAllText("DisableRequestBody.json");
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);

Console.WriteLine(jsonObj.properties.workspaceId);
Console.WriteLine(jsonObj.properties.logs[0].categoryGroup);
Console.WriteLine(jsonObj.properties.logs[0].retentionPolicy.enabled);

假设您的 JSON 数据是:

"properties": {
"workspaceId": "NewValueForMyLAWorkspaceID",
"logs": [
  {
    "categoryGroup": "allLogs",
    "enabled": false,
    "retentionPolicy": {
      "enabled": false,
      "days": 0
    }
  }
],
"logAnalyticsDestinationType": ""
 }
}

输出: