我有一个如下的json数据,我想在" revs"中添加新条目。数组如果Item_id匹配,那么说我看的Item_id是1,现有的json数据包含两个项目" revs"数组,并希望添加新条目
{
"Root" : [
{
"Item_Name" : "Test",
"Items" : [
{
"Item_id" : "1",
"revs" : [
{
"rev_id" : "1"
},
{
"rev_id" : "3"
},
{
"rev_id" : "need to add new entry here"
}
]
},
{
"Item_id" : "2",
"revs" : [
{
"rev_id" : "1"
}
]
}
]
}
]
}
我像这样解析json数据
JObject jsonObject = JObject.Parse(<the json data above>);
迭代进入&#34; revs&#34;在Item_id匹配之后的数组,我创建了一个辅助新条目数据的JObject
JObject new_rev = new JObject();
new_rev["rev_id"] = "need to add new entry here"
如何使我的new_rev数据反映在jsonObject中?
p / s:我之前使用jsoncpp for C ++,我只是通过引用对象循环,我可以轻松地将json数据修改成它
感谢。
答案 0 :(得分:2)
假设Root
数组中只有一个项目,并假设Item_id
将是唯一的
JObject jsonObject = JObject.Parse(<the json string>);
JObject new_rev = new JObject();
new_rev["rev_id"] = "need to add new entry here";
JArray items = jsonObject["Root"][0]["Items"].Value<JArray>();
foreach(var item in items){
if(item.Value<JObject>()["Item_id"].Value<string>() == "1"){
item["revs"].Value<JArray>().Add(new_rev);
break;
}
}
在此处查看documentation
答案 1 :(得分:1)
我试着找出更好的方法来添加数据,最后实现LINQ(方法语法)让我的生活更轻松,下面的代码对我有用,eventhough包含多个Root,Items
对不起,我还是LINQ的新手,也许有人可以用同样的查询语法来启发我
JObject jsonObject = JObject.Parse(<existing json data>);
JObject newNode = new JObject();
newNode["rev_id"] = "need to add new entry here"
jsonObject["Root"].Children()
.Where(w => w["Item_Name"].ToString() == selectedItemName)
.Select(s => s["Items"]).Children()
.Where(w => w["Item_id"].ToString() == selectedItemId)
.Select(s => s["revs"]).Children()
.LastOrDefault().AddAfterSelf(newNode);