在C#中的json文件中追加数据

我如何继续追加数据? 我有这个:

{ "13232": [ "2012952" ] } 

我想添加另一个对象,例如:

 { "13232": [ "2012952" ], "19213": [ "2016086" ] } 

这是我使用的代码:

 JArray array = new JArray(); array.Add(Itemid); JObject o = new JObject(); o[Userid] = array; string json = o.ToString(Formatting.Indented); //i know this keeps appending text but how would i append it inside the { and }? File.AppendAllText("E:/media.json", json); 

我真的不知道如何继续添加它,但也许其他人有?

您将无法使用文件追加操作来执行此操作。 文件追加操作只能添加文本到最后,它们不能在中间的某个位置插入文本。 这使得无法使用file-append来保持JSON有效。

你有两个我能想到的选择:

  1. 将整个文件读入对象,添加对象,然后重写整个文件(性能不佳)
  2. 打开文件读/写,解析直到你到达结束大括号,然后写剩下的数据,然后写关闭大括号(不是琐碎的)

我建议您使用Newtonsoft Json lib,作为nuget包提供。

您可以创建一个模型类来表示json节点,然后您可以将Json反序列化为该模型,并在最后构建一个包含新元素的数组,然后将其重新序列化为json。

看看这个关于它的MSDN页面: https : //msdn.microsoft.com/en-us/library/bb412179(v = vs.110).aspx

编辑: 实际的NewtonSoft文档

步骤:1 反序列化集合

2:一个带有listName.Add(className)的新类实例;

3: 重新整理集合

最安全的方法是read-update-rewrite(适用于JSON和XML格式,因为它们不支持附加)。

如果您可以使用无效的JSON,则下一个选项是简单地将JSON片段与您拥有的代码连接起来,而不是使用JsonReader SupportMultipleContent来读取片段使用JsonReader读取多个片段

如果这些方法不起作用并且你的格式是固定的 – 在文件中找到最后的位置,那么在那里寻找流并编写新的数组元素并附加]}