我正在尝试向现有JSON
JObject
添加新节点,但是当我添加它时,格式不正确。它在整个节点周围添加了引号,并且已经到位。
背景:
我正在加载一个JSON
文件,做一些逻辑,然后重新添加一个节点。想象我可以这样做:
mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject));
File.WriteAllText("myfile.json", mainJson.ToString());
问题是这是结果:
{
"JSONFile": [
{
"More": "Nodes",
"InThe": "File"
}
],
"Customers": "{\"FirstName\":\"Mike\",\"LastName\":\"Smith\"},{\"FirstName\":\"Jane\",\"LastName\":\"Doe\"}",
}
我知道如果我这样做,我的JsonConvert.SerializeObject(MyObject)就可以了:
string json = JsonConvert.SerializeObject(MyObject);
File.WriteAllText("myfile2.json" json);
结果如下:
[
{
"FirstName": "Mike",
"LastName": "Smith"
},
{
"FirstName": "Jane",
"LastName": "Doe"
}
]
我错过了什么?
修改 关注@Swagata Prateek的评论;
mainJson.Add("Customers",JObject.FromObject(MyObject));
未处理的类型' System.ArgumentException'发生在Newtonsoft.Json.dll
其他信息:对象序列化为Array。期望JObject实例。
我应该注意MyObject是实际ObservableCollection
,如果这有所不同
答案 0 :(得分:4)
你能尝试一下吗?
mainJson.Add("NewNode", JObject.FromObject(MyObject));
File.WriteAllText("myfile.json", mainJson.ToString());
当您执行JsonConvert.SerializeObject(MyObject)
时,它序列化MyObject
并在此过程中从中获取字符串。
当您指定mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject));
时,您将字符串分配给NewNode
。因此,您会得到一个带引号的字符串,表示序列化的MyObject
<强>更新强>:
如果要将集合转换为JArray, JArray.FromObject
是您想要查找的方法。在这种情况下,该段看起来像
mainJson.Add("NewNode", JArray.FromObject(obsColl));
File.WriteAllText("myfile.json", mainJson.ToString());
答案 1 :(得分:1)
from django.db.models import Q
deliverySchedule = DeliverySchedule.objects.filter(Q(Status = 'cut off completed') | Q(Status = 'Active')).order_by('deliverySchedule')