2015-02-09 87 views
-1

我有一個問題,這個JSON來獲得JArray第二級:獲得令牌以JSON

{ 
    "Level1": { 
    "Level2": [{ 
     "id": "Chart", 
     "Box": [{ 
     "id": "1", 
     "value": "10" 
     },{ 
     "id": "2", 
     "value": "20" 
     }] 
    }] 
    } 
} 

而且我想完全地水平2像這樣陣列:

JArray contasdasd = _jsonMaster["Level1"]["Level2"] as JArray; 

我得到:

{ 
    "id": "Chart", 
    "Box": [{ 
    "id": "1", 
    "value": "10" 
    },{ 
    "id": "2", 
    "value": "20" 
    }] 
} 

,我想:

"Level2": [{ 
    "id": "Chart", 
    "Box": [{ 
    "id": "1", 
    "value": "10" 
    },{ 
    "id": "2", 
    "value": "20" 
    }] 
}] 

有什麼方法可以獲得2級?

+0

所以採取'[「Level2的」]'出你的_JsonMaster行...如果你需要一個鍵,那麼你必須開始一個水平上漲... – 2015-02-09 15:46:35

+0

感謝@Marc B,如果我需要要使用結果與另一個Json文件連接,我該怎麼做,我不能使用結果..? – 2015-02-09 16:35:42

回答

0

您感興趣的對象"Level2": [...]不是JArray本身,而是JProperty。您可以通過搜索Level1的屬性來獲得它,但請記住,您現在將擁有JProperty而不是JArray。該結果的Value將是您在當前代碼中獲得的JArray

JProperty contasdasd = _jsonMaster["Level1"].First(o => (o as JProperty).Name == "Level2") as JProperty; 

    Console.WriteLine(contasdasd.ToString()); // Will be what you are looking for 
    Console.WriteLine(contasdasd.GetType()); // Will return JProperty 
    Console.WriteLine(contasdasd.Value.GetType()); // Will return JArray 
+0

MatthewG謝謝你解決方案更好。 – 2015-02-10 09:59:27

1

當然,你只是做

var level1 = _jsonMaster["Level1"]; 

的問題是,你已經走得太遠了一個級別。

+0

我正在測試這種方式,但問題是我怎樣才能做到這一點:var level1 = _jsonMaster [「Level2」]; var level2 = _jsonApplication [「Level2」];表示合併爲一個json,帶有兩個Level2。 – 2015-02-09 16:10:44

+0

@JohnKass對不起,我不明白你的意思。 – 2015-02-09 16:14:47

+0

感謝您的迴應,我的意思是..我現在的問題是這個var result = _jsonMaster [「Level2」];的結果,因爲有了這個結果,我需要連接到另一個Json,我如何使用結果爲這個level2添加到另一個Json文件? – 2015-02-09 16:34:33