2016-05-16 59 views
1

我试图将成员添加到Json文件,但我无法完全弄清楚如何将新成员添加到现有文件。c#向Json文件添加新条目

{ 
    "Members": { 
    "Example1": { 
     "LastOnline": "2016-05-16T12:09:04.6459345Z", 
     "TimeUntillEx": "2016-05-16T12:09:04.6459345Z", 
     "Paied": true 
    }, 
    } 
} 

问题是“Example1”已经是用户的名称。我不知道如果我应该尝试添加更多或复制现有的和编辑复制的文本。 希望有人能帮助。

btw。即时通讯新的如此遗憾的任何错误

+4

我认为你需要的JSON反序列化到一个模型中,添加条目,然后序列化再次。 – FailedUnitTest

+0

@@ FailedUnitTest上面的答案。如果您处理纯文本,另一个选项可能是为对象构建模板并执行简单的占位符替换来添加新对象。 –

+0

http://www.newtonsoft.com/json/help/html/MergeJson.htm –

回答

1

首先,我会做的是将Members属性更改为array而不是object。然后,我会做这样的事情:

//original json. Notice that I added '[ ]' to make it an array 
var json = "{ 'Members': " + 
      "[ " + 
       "{'Example1': " + 
        "{ 'LastOnline': '2016-05-16T12:09:04.6459345Z', " + 
         "'TimeUntillEx': '2016-05-16T12:09:04.6459345Z', " + 
         "'Paied': true" + 
        "}, " + 
       "} " + 
      "] " + 
      "}"; 

//new member 
var newMember = "{ 'Example2': " + 
        "{ 'LastOnline': '2016-12-16T12:09:04.6459345Z', " + 
         "'TimeUntillEx': '2016-12-16T12:09:04.6459345Z', " + 
         "'Paied': false" + 
        "}, " + 
       "}"; 

//parse the json 
var obj = JObject.Parse(json); 

//get members array 
var array = obj.GetValue("Members") as JArray; 

//parse the new member and add it to the array 
var add = JObject.Parse(newMember); 

array.Add(add); 

//serialize the json 
var output = JsonConvert.SerializeObject(obj, Formatting.Indented); 

//print the results 
Console.WriteLine(output); 

对于这一点,你需要

using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 

enter image description here

+1

谢谢。这正是我需要的! –

+0

顺便说一句有没有简单的方法来删除一个条目? –

+0

当然@MarlonHaenen。首先,如果你喜欢这个答案,不要忘记加入它。 基本上,因为你正在使用'Newtonsoft.Json.Linq'。您可以像处理任何其他通用的'C#'对象一样操作'JObject'和'JArray'。所以,如果你想从数组中删除一些东西。我会去这样做: 'array.RemoveAt(1); //'这将消除我们刚才添加 或者你可以不喜欢 'array.Remove(添加)条目;'/ /将删除我们刚添加的对象。 不要忘记在最后序列化对象。 –