2017-07-24 132 views
-3

我有一個數據解析的問題,我在Visual Studio中使用C#,我需要解析我的json文件的算法。這是結構:C#和json數據解析

{ 
    "objects": { 
    "minecraft/sounds/mob/stray/death2.ogg": { 
     "hash": "d48940aeab2d4068bd157e6810406c882503a813", 
     "size": 18817 
    }, 
    "minecraft/sounds/mob/husk/step4.ogg": { 
     "hash": "70a1c99c314a134027988106a3b61b15389d5f2f", 
     "size": 9398 
    }, 
    "minecraft/sounds/entity/rabbit/attack2.ogg": { 
     "hash": "4b90ff3a9b1486642bc0f15da0045d83a91df82e", 
     "size 

我想拉「minecraft/sounds/mob/stray/death2.ogg」和「散列」數據。

我的C#代碼:

HttpWebRequest reqobje = WebRequest.Create(assetsurl) as HttpWebRequest; 

using (HttpWebResponse response = reqobje.GetResponse() as HttpWebResponse) 
{ 
    StreamReader objejsonsr = new StreamReader(objectjson); 
    jsonVerisi = objejsonsr.ReadToEnd(); 
} 

parser = JObject.Parse(jsonVerisi); 
JToken job = parser["objects"]; 
+0

請分享您收到的錯誤和您如何解析它的示例代碼。你在使用Json.net還是其他一些庫? –

+2

好的,你有問題。你試過什麼代碼?有很多使用C#解析JSON的例子。正如所寫,您的問題並不表示您的努力。 – Amy

+0

你有什麼嘗試?我沒有看到任何代碼 – maccettura

回答

1

由於您使用json.net,你可以反序列化的字符串轉換成你需要的任何對象。下面的示例是一個匿名類型與字典,以便您可以使用都回來了動態密鑰:

var result = JsonConvert.DeserializeAnonymousType(jsonVerisi, new { objects = 
    new Dictionary<string, Dictionary<string, string>>() }); 
var objects = result.objects; // key/value; 

這是一種方式,你可以用它(甚至映射到自己的模型,而不是匿名類型使其更容易處理):

var objects = result.objects 
    .Select(m => new 
    { 
     Path = m.Key, 
     Hash = m.Value["hash"], 
     Size = int.TryParse(m.Value["size"], out var value) ? value : 0, 
    }).ToList(); 
var path = objects[0].Path; // Get the path of the first object 
+0

剛剛給答案增加了一個例子。如果轉移到prod環境,您可以考慮爲字典鍵添加額外的空檢查,但希望這可以讓您開始! –

+0

非常感謝,我一週之內一直在尋找它。 –