如何从C#中的JSON对象中获取值?

如何从C#中的JSON对象中获取值?,c#,json,C#,Json,我试图从我从GoogleAPI请求的JSON对象中获取值。我的目标是从成绩单中获取数据 这是JSON文件 { "results": [ { "alternatives": [ { "transcript": "how old are you", "confidence": 0.66882694 } ] } ] } 我试着用这个来得到输出。但它不起作用 var result =

我试图从我从GoogleAPI请求的JSON对象中获取值。我的目标是从成绩单中获取数据

这是JSON文件

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old are you",
          "confidence": 0.66882694
        }
      ]
    }
  ]
}
我试着用这个来得到输出。但它不起作用

var result = ["result"][0]["alternative"][0]["transcript"].ToString()

当我查询数据时,它不显示任何内容,只显示空字符串。

您的字符串是JSON格式的,因此需要将其解析为对象。为此,您可以使用JSON.NET

以下是如何将JSON字符串解析为动态对象的示例:

string source = "{\r\n   \"id\": \"100000280905615\", \r\n \"name\": \"Jerard Jones\",  \r\n   \"first_name\": \"Jerard\", \r\n   \"last_name\": \"Jones\", \r\n   \"link\": \"https://www.facebook.com/Jerard.Jones\", \r\n   \"username\": \"Jerard.Jones\", \r\n   \"gender\": \"female\", \r\n   \"locale\": \"en_US\"\r\n}";
dynamic data = JObject.Parse(source);
Console.WriteLine(data.id);
.
控制台显示要显示的数据

将JSON转换为类 你会得到:

public class Alternative
{
    public string transcript { get; set; }
    public double confidence { get; set; }
}

public class Result
{
    public List<Alternative> alternatives { get; set; }
}

public class RootObject
{
    public List<Result> results { get; set; }
}
现在,只要将json放在
字符串
变量中,就可以按自己的喜好反序列化json

var yourObject = JsonConvert.DeserializeObject<RootObject>(jsonString);
解决方案(不使用NewtonSoft.Json等外部库):

  • 添加引用System.Web.Extensions
  • 使用程序集System.Web.Script.Serialization
代码:

var jsonString = "{\"results\": [ {\"alternatives\": [ {\"transcript\": \"how old are you\", \"confidence\": 0.66882694 } ] }  ]}";
var jsonDeserialized = serializer.Deserialize<dynamic> (jsonString);
Console.WriteLine (jsonDeserialized["results"][0]["alternatives"][0]["transcript"]); // Prints "how old are you"
var jsonString=“{\'结果\':[{\'备选方案\':[{\'转录本\':\'你多大了\',\'信心\':0.66882694}]}];
var jsonDeserialized=serializer.Deserialize(jsonString);
Console.WriteLine(jsonDeserialized[“结果”][0][“备选方案”][0][“转录本”]);//打印“你多大了”

通常,如果我知道JSON的结构是什么样的,我会使用类来解析它

但是您可以随时将字符串解析为JSON对象

using Newtonsoft.Json.Linq;

var json=JObject.Parse(YOUR_JSON_STRING)
var result = json["results"][0]["alternative"][0]["transcript"].ToString()


另外,您请求的密钥与JSON中的密钥不匹配

您的密钥与JSON不匹配。您的JSON对象存储在哪里。你需要在那个物体上工作。你在谷歌上搜索过“用C#解析JSON字符串”吗?看看
var jsonString = "{\"results\": [ {\"alternatives\": [ {\"transcript\": \"how old are you\", \"confidence\": 0.66882694 } ] }  ]}";
var jsonDeserialized = serializer.Deserialize<dynamic> (jsonString);
Console.WriteLine (jsonDeserialized["results"][0]["alternatives"][0]["transcript"]); // Prints "how old are you"
using Newtonsoft.Json.Linq;

var json=JObject.Parse(YOUR_JSON_STRING)
var result = json["results"][0]["alternative"][0]["transcript"].ToString()