在JSON对象中交换节点

时间:2019-02-26 08:43:09

标签: c# json

我有一个包含以下字符串的json对象:

{  
   "id":"7081236211",
   "name":"TURYSTYCZNY PLECAK WISPORT REINDEER 75L OLIVE",
   "category":{  
      "id":"147827"
   },
   "parameters":[  
      {  
         "id":"11323",
         "valuesIds":[  
            "11323_1"
         ],
         "values":[  

         ],
         "rangeValue":null
      },
      {  
         "id":"13949",
         "valuesIds":[  
            "13949_225446"
         ],
         "values":[  

         ],
         "rangeValue":null
      }
   ]
}

我想更改此json字符串的“ parameter”节点,该json字符串是动态生成的,并且参数中的节点数不同:

\"parameters\": [
    {
      \"id\": \"11345\",
      \"valuesIds\": [],
      \"values\": [
        \"23424\",
        \"43656\"
       ],
      \"rangeValue\": null
    }]

那我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用Newtonsoft.Json库。

var obj = JsonConvert.DeserializeObject<Rootobject>(input);
var paramToAdd = JsonConvert.DeserializeObject<Parameter>(paramToAddJson);
obj.parameters.Add(paramToAdd);

var output = JsonConvert.SerializeObject(obj);
output.Dump();

public class Rootobject
{
    public string id { get; set; }
    public string name { get; set; }
    public Category category { get; set; }
    public List<Parameter> parameters { get; set; }
}

public class Category
{
    public string id { get; set; }
}

public class Parameter
{
    public string id { get; set; }
    public string[] valuesIds { get; set; }
    public string[] values { get; set; }
    public object rangeValue { get; set; }
}

Full Example