在 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": ""
}
}
输出:
我在内容下面有一个 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": ""
}
}
输出: