Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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#_.net_Json_Json.net - Fatal编程技术网

C# 在C语言中解析JSON响应#

C# 在C语言中解析JSON响应#,c#,.net,json,json.net,C#,.net,Json,Json.net,在对api进行查询之后,我得到一个json响应 JSON类似于: { "results": [ { "alternatives": [ { "confidence": 0.965, "transcript": "how do I raise the self esteem of a child in his academic achievement at the sam

在对api进行查询之后,我得到一个json响应

JSON类似于:

    {
   "results": [
      {
         "alternatives": [
            {
               "confidence": 0.965,
               "transcript": "how do I raise the self esteem of a child in his academic achievement at the same time "
            }
         ],
         "final": true
      },
      {
         "alternatives": [
            {
               "confidence": 0.919,
               "transcript": "it's not me out of ten years of pseudo teaching and helped me realize "
            }
         ],
         "final": true
      },
      {
         "alternatives": [
            {
               "confidence": 0.687,
               "transcript": "is so powerful that it can turn bad morals the good you can turn awful practice and the powerful once they can teams men and transform them into angel "
            }
         ],
         "final": true
      },
      {
         "alternatives": [
            {
               "confidence": 0.278,
               "transcript": "you know if not on purpose Arteaga Williams who got in my mother "
            }
         ],
         "final": true
      },
      {
         "alternatives": [
            {
               "confidence": 0.621,
               "transcript": "for what pink you very much "
            }
         ],
         "final": true
      }
   ],
   "result_index": 0
}
我必须做两件事才能得到上述json结果(我将其作为字符串*):

  • 获取json响应的转录本部分
  • 处理这些字符串

    • 我是新来的。转换为字符串只称为序列化。为什么反序列化在这里有帮助
  • 转换为字符串:我使用:

     var reader = new StreamReader(response.GetResponseStream());
    
    
                responseFromServer = reader.ReadToEnd();
    

    如何实现这一点?

    您应该将其反序列化。这是最简单的处理方法。使用和
    dynamic
    ,可能看起来像:

    dynamic jsonObj = JsonConvert.DeserializeObject(responseFromServer);
    foreach (var result in jsonObj.results) {
        foreach (var alternative in result.alternatives) {
            Console.WriteLine(alternative.transcript);
        }
    }
    
    但是您可能希望为它创建显式类。然后你可以做:

    MyRootObject root = JsonConvert.DeserializeObject<MyRootObject>(responseFromServer);
    
    MyRootObject root=JsonConvert.DeserializeObject(responseFromServer);
    

    并像处理任何其他.NET对象一样处理它。

    您应该对其进行反序列化。这是最简单的处理方法。使用和
    dynamic
    ,可能看起来像:

    dynamic jsonObj = JsonConvert.DeserializeObject(responseFromServer);
    foreach (var result in jsonObj.results) {
        foreach (var alternative in result.alternatives) {
            Console.WriteLine(alternative.transcript);
        }
    }
    
    但是您可能希望为它创建显式类。然后你可以做:

    MyRootObject root = JsonConvert.DeserializeObject<MyRootObject>(responseFromServer);
    
    MyRootObject root=JsonConvert.DeserializeObject(responseFromServer);
    

    并像处理任何其他.NET对象一样处理它。

    您可以将JSON解析为具体的类,并在以后使用这些类

    要做到这一点,您可以使用这样的服务,它根据您提供的JSON生成类。或者,您可以使用Visual Studio内置功能粘贴JSON作为类:

    公共类替代方案
    {
    公众双重信心{get;set;}
    公共字符串转录本{get;set;}
    }
    公开课成绩
    {
    将字符串化JSON解析为具体类实例的公共列表:

    var root = JsonConvert.DeserializeObject<RootObject>(responseFromServer);
    
    var root=JsonConvert.DeserializeObject(responseFromServer);
    
    您可以将JSON解析为具体的类,并在以后使用这些类

    为此,您可以使用类似的服务,该服务基于您提供的JSON生成类。或者,您可以使用Visual Studio内置功能将JSON粘贴为类:

    公共类替代方案
    {
    公众双重信心{get;set;}
    公共字符串转录本{get;set;}
    }
    公开课成绩
    {
    将字符串化JSON解析为具体类实例的公共列表:

    var root = JsonConvert.DeserializeObject<RootObject>(responseFromServer);
    
    var root=JsonConvert.DeserializeObject(responseFromServer);
    
    不需要反序列化-但这会让您的生活更轻松:o)反序列化JSON会将其转换回.NET对象。然后,您可以访问该对象的属性,而无需执行大量字符串解析。使用Newtonsoft JSON.NET之类的库来帮助进行反序列化。不需要反序列化-但这会让您的生活更轻松:o)反序列化JSON会将其转换回.NET对象。然后,您可以访问该对象的属性,而不是执行一系列字符串解析。使用Newtonsoft JSON.NET之类的库来帮助进行反序列化。使用剪贴板中的JSON VS提供菜单“编辑/粘贴特殊内容/粘贴JSON为类”w剪贴板中的ith JSON VS提供菜单编辑/粘贴特殊/将JSON粘贴为类被“将JSON粘贴为类”功能所压缩!被“将JSON粘贴为类”功能所打动!