在JObject中写入JArray
问题描述:
我有一个JSON文件。在JObject中写入JArray
{
"time": [
{
"id": "9999",
"name": "Foo",
"subitem": [
{
"name": "Bar",
"id": "99990",
"visible": true,
"subitem": [
{
"id": "999901",
"name": "Flex",
"visible": true
},
{
"name": "Bear",
"id": "999902",
"visible": true
},
{
"name": "James",
"id": "999903",
"visible": true
}
]
},
{
"name": "Smith",
"id": "999966",
"visible": true
},
{
"name": "John",
"id": "999933",
"visible": true
}
],
"visible": true
},
{
"name": "Doe",
"id": "1111",
"visible": true,
"subitem": [
{
"name": "Jack",
"id": "111111",
"visible": true
},
{
"name": "Wilson",
"id": "111188",
"visible": true
},
{
"name": "Andy",
"id": "111144",
"visible": true
},
{
"name": "Gibbs",
"id": "111155",
"visible": true
}
]
}
],
"name": "asdf",
"id": "13",
"visible": true
}
我也有一个JObject和一个方法来获取所有JSON数据并将其存储在此对象中。
json1 = ti.GetTimeItems();
我有2个方法在另一个类中写入JSON文件。数据文件夹是路径。
public void WriteToJson(JObject obj)
{
string fileName = dataFolder + "json1.json";
WriteToJson(fileName, obj);
}
private void WriteToJson(string fileName, JObject obj)
{
using (StreamWriter file = File.CreateText(fileName))
using (JsonTextWriter writer = new JsonTextWriter(file))
{
obj.WriteTo(writer);
}
}//end WriteToJson
然后,我有一个Windows窗体,我想从2个文本框中获取文本并将这些文本添加到JSON文件中。
最后我有我的单击事件
private void button1_Click_1(object sender, EventArgs e)
{
//string json = File.ReadAllText(url);
//JArray time = (JArray)json1.SelectToken("time");
json1.Add(new JObject(
new JProperty("name", textBoxName.Text),
new JProperty("id", textBoxId.Text),
new JProperty("visible", true)));
ti.WriteToJson(json1);
}
我的问题是,我似乎无法写在JObject阵列“时间”。 我设法写入文件,但在根中而不是在数组内。 我试过json1.SelectToken(“time”)和很多不同的方法,比如这个http://*.com/questions/15413825/how-do-you-add-a-jtoken-to-an-jobject#15782238以及Newtonsoft文档中的一些方法。
任何帮助appriciated
答
问题通过((JArray)json1.GetValue("time"))
解决。选择JObject json1中的数组并添加到该数组中,而不是根。
希望这会帮助别人。
((JArray)json1.GetValue("time")).Add(
new JObject(
new JProperty("name", textBoxName.Text),
new JProperty("id", textBoxId.Text),
new JProperty("visible", true)));
ti.WriteToJson(json1);