json的几种添加方式
1.
只能添加JProperty类的Object,可以一次性添加多个
Add方法添加只能针对于json中的第一层,第二层添加目前还无法得知,但是有其他方法进行弥补
string json = "{\"ReqCode\":{\"errcode\":{\"isSuccessFlag\":\"1\",\"Success\":\"0\"},\"23\":\"123123\"},\"EWQ\":{\"2\":\"2\"}}";
string newJson = "{\"errcode\":{\"isSuccessFlag\":\"1\",\"Success\":\"0\"}}";
var jsonObj = JObject.Parse(json);
var newJsonObj = JObject.Parse(newJson);
jsonObj.Add(new JProperty("req", new JObject(new JProperty("", JToken.Parse("\"asdasd\"")))));
jsonObj.Add(newJsonObj.Properties());
2.
当josn孩子添加时会变成JToken类型的一个集合,但是只有第一层是集合形式的JToken,第二层之后则是JToken,这也是json无法为第一层孩子添加第二层孩子的原因,因为类不是一个集合,AddAfterSelf是向自身之后添加一个JToken,AddBeforeSelf则反之,其中jsonObj.First.First也有这个方法,但根据如上所述,无法添加
string json = "{\"ReqCode\":{\"errcode\":{\"isSuccessFlag\":\"1\",\"Success\":\"0\"},\"23\":\"123123\"},\"EWQ\":{\"2\":\"2\"}}";
var jsonObj = JObject.Parse(json);
jsonObj.First.First.AddAfterSelf(JToken.Parse("{\"isSuccessFlag\":\"1\",\"Success\":\"0\"}"));//错误
jsonObj.First.AddAfterSelf(JToken.Parse("{\"isSuccessFlag\":\"1\",\"Success\":\"0\"}"));//正确
3.
下类方法是最直观的一种添加方式,但要注意的是当添加深度超过2以上时,需要保证前面所有json的参数名都存在json中,否则会报错,另外,该种方式还能对已有的参数进行覆盖,即如果jsonObj["ReqCode"]["er22rcode"]已经存在则会被如下操作覆盖
string json = "{\"ReqCode\":{\"errcode\":{\"isSuccessFlag\":\"1\",\"Success\":\"0\"},\"23\":\"123123\"},\"EWQ\":{\"2\":\"2\"}}";
var jsonObj = JObject.Parse(json);
jsonObj["ReqCode"]["er22rcode"] = JToken.Parse("{\"isSuccessFlag\":\"1\",\"Success\":\"0\"}");
4.
Merge方法可以把两个不同的json拼接到深度相同的json中,也是可以当作新增的一种,比如:
JObject Jobj1 = new JObject(new JProperty("1","2"));
JObject Jobj2 = new JObject(new JProperty("1","2"));
Jobj1.Merge(Jobj2);