2017-05-19 6 views
-2

私はJson.netを初めて使っているので、これを正しく/最善の方法でやっているかどうかはわかりませんが、これを理解できません:Json.Net、パスで動的にjsonを作成するには?

出力JObjectを作成しています:今

JObject joOutput = new JObject(); 

、私は値へのパスのリストを持っている:

a.b.c = 5 
a.b.d = 7 
a.c.q = 8 

だから私はその階層を使用して明白な方法でjoOutputオブジェクトを移入します。

パスで値を設定する方法が見つからないことがあります。パスが存在しない場合は、パスを明示的に作成します。

私はパスを分割してノードを作成しようとしていますが、これまでのところ、apiは非常に混乱しているので、それを得ることはできません。

正しい方向に向けることができますか?

ありがとうございます!

+3

あなたは 'a'で行うことができない' joObject'を使う予定はありますか? –

+0

@JamesCurranとは何ですか? – SledgeHammer

+1

オブジェクト 'a'; –

答えて

2
string a = @"{""b"": {""c"":5, ""d"":7}, ""c"": {""q"":8}}"; 
JObject joObject = JObject.Parse(a); 

UPDATE:文字列のキーとオブジェクト値で辞書を使って、あなたの問題を解決するために

var B = new Dictionary<string, int> { ["c"] = 5, ["d"] = 7 }; 
var C = new Dictionary<string, int> { ["q"] = 5, ["8"] = 7 }; 
var A = new Dictionary<string, object> { ["b"] = B, ["c"] = C }; 

var AA = JObject.FromObject(A); 
+0

私はそれをダイナミックに作成する必要があります。これは単なるサンプルセットです。それは次回の実行でa.q.zかもしれません。私はパスのリストを取得し、それからjsonを作成する必要があります。 – SledgeHammer

+0

@SledgeHammerあなたはあなたが望んでいるにもかかわらず、その文字列を一緒に置くことができることを理解していますか? –

+0

@ManfredRadlwimmer、文字列を自分で作成するのではなく、APIを使うことがポイントでした。 – SledgeHammer

-1

試してみてください。

var B = new JObject(); 
B.Add("c", 5); 
B.Add("d", 7); 

var C = new JObject(); 
C.Add("q", 8); 


JObject A = new JObject(); 
A.Add("b", B); 
A.Add("c", C); 

アップデート2、完全を期すため、ここではウラジミールの方法があります。

Dictionary<string,object> myJsonObj = new Dictionary<string, object>; 

内部の各要素も同じ辞書にすることができます。

+0

Huh ??????????? – SledgeHammer

+0

myJsonObj.Add( "subElement"、新しい辞書<文字列、オブジェクト>); myJsonObj ["subElement"]。( "subsubElement"、1);を追加します。 –

+0

シリアライズ後、{"subElement":{"subsubElement":1}}になります。 –

関連する問題