2016-09-06 17 views
2

新しいノードを既存のJSONJObjectに追加しようとしていますが、追加すると正しくフォーマットされません。それはノード全体を引用符で囲み、\が置かれます。JSON既存のJObjectにノードを追加

背景: は、私は後ろにノードを追加し、いくつかのロジックをやって、JSONファイルをロードしています私はこのようにそれを行うことができます考え出し:

mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject)); 
File.WriteAllText("myfile.json", mainJson.ToString()); 

問題は、これが結果であるということです

string json = JsonConvert.SerializeObject(MyObject); 
File.WriteAllText("myfile2.json" json); 
{ 
"JSONFile": [ 
    { 
    "More": "Nodes", 
    "InThe": "File" 
    } 
], 
"Customers": "{\"FirstName\":\"Mike\",\"LastName\":\"Smith\"},{\"FirstName\":\"Jane\",\"LastName\":\"Doe\"}", 
} 

は、私がこれを行う場合、私のJsonConvert.SerializeObject(MyObjectに)が動作していることを知っています

結果は次のとおりです。

[ 
    { 
    "FirstName": "Mike", 
    "LastName": "Smith" 
    }, 
    { 
    "FirstName": "Jane", 
    "LastName": "Doe" 
    } 
] 

何が欠けていますか?

編集: @Swagata Prateekのコメント:型 'System.ArgumentExceptionの' の

mainJson.Add("Customers",JObject.FromObject(MyObject)); 

未処理の例外がNewtonsoft.Json.dll

で発生しました追加情報:Arrayにシリアライズされたオブジェクト。 JObjectインスタンスが必要です。

私はMyObjectには、それは違い

+1

のようになります。 。 :) –

答えて

3

を作る場合は、親切にこれを試みることができるObservableCollection実際であることに注意する必要がありますか?

mainJson.Add("NewNode", JObject.FromObject(MyObject)); 
File.WriteAllText("myfile.json", mainJson.ToString()); 

あなたはそれが MyObjectをシリアル化し、その過程であなたはそれから文字列を取得 JsonConvert.SerializeObject(MyObject)を行っています。

mainJson.Add("NewNode", JsonConvert.SerializeObject(MyObject));を割り当てるときは、文字列をNewNodeに割り当てます。

JArray.FromObjectはあなたがJArrayにあなたのコレクションを変換したい場合のために見てみたいと思います方法です:したがって、あなたは、シリアル化されたMyObject

更新を表し、引用符で囲まれた文字列を取得します。あなたは `JsonConvert.SerializeObject(MyObjectに)を呼び出すと、その場合には、セグメントは、このように` NewNode`がここに引用された文字列としての地位を提示している、 `、文字列としてシリアル化され、ここでMyObject``

mainJson.Add("NewNode", JArray.FromObject(obsColl)); 
File.WriteAllText("myfile.json", mainJson.ToString()); 
+0

男が選ぶ、奴隷が従う!とにかく上記の編集を見てください。これはエラーを返す。 – Xaphann

+1

ごめん。 Didntはそれがコレクションであることを知っていた。つかまっている。電話でコードセグメントを正しく入力できるかどうかわからない –

関連する問題