2016-05-16 118 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(添加)條目;'/ /將刪除我們剛添加的對象。 不要忘記在最後序列化對象。 –