2017-09-25 120 views
-1

我使用System.Net.Json.JsonTextParser而在C#開發程序來解析JSON文件,所以我設置了col對象像下面根據教程:解析C#中的json對象?

JsonTextParser parser = new JsonTextParser(); 
JsonObject obj = parser.Parse(System.IO.File.ReadAllText(file)); 
JsonObjectCollection col = (JsonObjectCollection)obj; 

在這種情況下,我知道我能得到的值鍵(例如,"formats")像以下:

string Data = Convert.ToString(col["formats"].GetValue()); 

但是,我怎麼能讀一鍵下另一個JSON對象?對不起,我不知道怎麼表達這一點,但是,例如,我有:

"formats" : {"key1" : "value11", "key2" : "value12"}, {"key1" : "value21", "key2" : "value22"} 

,我應該怎樣做才能"formats"下的每個JSON對象?如何讀取"key1"的每個值?

+2

只是出於好奇,你爲什麼不使用Json.NET? – Rafael

+2

只是一個建議,Newtonsoft JSON.NET https://www.newtonsoft.com/json/help/html/JsonNetVsDotNetSerializers.htm可能是一個更好的庫處理JSON,我認爲你更有可能得到使用它的幫助。 – Novaterata

+0

是真正的json youre試圖解析爲jsonlint給我錯誤:解析錯誤第1行: 「格式」:{\t「key1」:「value1 ---------^ 期待'EOF ','}',',',']','''''' –

回答

2

你應該使用https://www.nuget.org/packages/Newtonsoft.Json/

你應該創建一個C#類coressponding您的JSON文件。

您的JSON文件將是:

public class Formats 
{ 
    public string Key1 {get; set;} 
    public string Key2 {get; set;} 
} 

,然後你的JSON文件轉換爲C#對象:

using (var streamReader = new StreamReader("file.json")) 
{ 
    string json = streamReader.ReadToEnd(); 
    var jsonObject = JsonConvert.DeserializeObject<List<Formats>>(json); 
    foreach(var obj in jsonObject) 
    { 
     Console.WriteLine($"Key1: {obj.Key1}, Key2: {obj.Key2}"); 
    } 
} 
+0

所以,如果我有更多的子項下的鍵,我可以像'obj .key1.key2.key3 ....'' – GreenRoof

+0

你可以用c#對象做任何事情,並且支持嵌套對象。 – Mightee