2017-07-24 123 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

非常感谢,我一周之内一直在寻找它。 –