Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C和json数据解析_C#_Json_Visual Studio - Fatal编程技术网

C# C和json数据解析

C# C和json数据解析,c#,json,visual-studio,C#,Json,Visual Studio,我在数据解析方面有一个问题,我在Visual Studio中使用C,我需要一个json文件的解析算法。结构如下: { "objects": { "minecraft/sounds/mob/stray/death2.ogg": { "hash": "d48940aeab2d4068bd157e6810406c882503a813", "size": 18817 }, "minecraft/sounds/mob/husk/step4.ogg": {

我在数据解析方面有一个问题,我在Visual Studio中使用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/trased/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"];

由于您使用的是json.net,因此可以将字符串反序列化为所需的任何对象。下面的示例是带有dictionary的匿名类型,因此您可以使用返回的动态键:

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

请分享您收到的错误以及您试图如何解析它的示例代码。您使用的是Json.net还是其他库?好的,您有问题。您尝试了什么代码?有很多使用C解析JSON的例子。如前所述,您的问题并不表明您有任何努力。您尝试过什么?我没有看到任何使用newtonsoft的codeim可能与刚才在答案中添加的示例重复。如果移动到PROD环境,可以考虑为字典键添加额外的空检查,但希望这能让您开始!非常感谢,我已经找了一个星期了。
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