C#替换JSON文件中的数组

fslejnso  于 2022-11-26  发布在  C#
关注(0)|答案(2)|浏览(240)

我正在尝试使用C# .net 6.0替换JSON文件中的数组
有这样一个JSON文件:

{
...
"exchange":{
...
"pair_whitelist": [
      "EOS3S/USDT",
      "ACH/USDT",
      "SOC/USDT"]
...
}
...
}

我想将此“pair_whitelist”数组替换为另一个数组

"pair_whitelist": [
      "SKM/USDT",
      "NEW/USDT",
      "XEC/USDT"]

我该怎么做?
我的尝试如下

public static dynamic GetJSONFromFile_dynamic(string path)
{
 var data = File.ReadAllText(path);
 return JsonSerializer.Deserialize<ExpandoObject>(data);
}
...
var config = GetJSONFromFile_dynamic(path_to_JSON_file);
dynamic a = config.exchange.pair_whitelist;

但我得到了以下错误:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'System.Text.Json.JsonElement'不包含'pair_whitelist'的定义
如何更改pair_whitelist数组的值?

b4lqfgs4

b4lqfgs41#

您可以尝试JObject.Parse()来解析Json文件,然后替换数组的值

JObject jObject = JObject.Parse(File.ReadAllText(path_to_JSON_file));

if(jObject["exchange"]?["pair_whitelist"] != null) //Check key exists before update
     jObject["exchange"]["pair_whitelist"] = ["Stack", "Overflow"];
ycggw6v2

ycggw6v22#

我将使用System.Text.Json中的JsonNode(.NET原生)

var json = @"{
""exchange"":{
    ""pair_whitelist"": [
          ""EOS3S/USDT"",
          ""ACH/USDT"",
          ""SOC/USDT""]
    }
}";
var node = JsonNode.Parse(json);
node["exchange"]["pair_whitelist"] = new JsonArray("SKM/USDT", "NEW/USDT", "XEC/USDT");

var newJson = node.ToJsonString();

相关问题