2016-04-11 75 views
0

我正在使用這個醜陋的代碼將一堆鍵/值對(保存在Dictionairy中)添加到JObject。它不會將它們添加爲孩子,而是作爲兄弟姐妹。那麼代碼的作品,但它會更乾淨,如果他們被添加爲子節點。 (動態對象E,保持JObject)將鍵/值作爲子對象動態添加到JSON.NET JObject中

public void trigger(dynamic e ,Pairs extras) 
    { 
     if (Post != null) 
     { 
      foreach (KeyValuePair<string, object> entry in extras) 
      { 
       Newtonsoft.Json.Linq.JValue val = new Newtonsoft.Json.Linq.JValue(entry.Value); 
       e.Add(entry.Key, val); 
      } 
      Post(this, e); 
     } 
    } 
+0

*好了代碼工作* - 那麼你有什麼問題,您有什麼問題嗎? – dbc

+0

我不希望它插入節點的同胞,而是一個孩子。但是我有問題.AddFirst() –

+0

*我不希望它插入節點的兄弟節點* - 什麼節點,「e」? ['e.Add(string,JToken)'](http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_Add.htm)將指定的屬性添加爲'e'的最後一個子項,所以我不是我確定我知道你的意思。你可以創建一個[示例](https://stackoverflow.com/help/mcve)輸入JSON和你想得到的結果嗎? – dbc

回答

0

對於我的特殊需要,(發送經由SignalR動態對象,它使用JSON.NET串行化)。我找到了一個更簡單的解決方案。

我的問題是,我有一個dymanic密封類,JSON.NET正在創建一個JTOKEN,然後我試圖添加更多的數據。當我做e.Add(string,JTOKEN)時,它創建了第二個子樹。這很醜陋。

我的解決方案現在可以在這裏找到:

can one convert a dynamic object to an ExpandoObject (c#)

相關問題