猿问

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

我尝试从 Google API 发出的请求的 JSON 对象中获取值。我的目标是从成绩单中获取数据。


这是 JSON 文件。


{

  "results": [

    {

      "alternatives": [

        {

          "transcript": "how old are you",

          "confidence": 0.66882694

        }

      ]

    }

  ]

}

我尝试使用它来获取输出。但这不起作用。


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

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


慕少森
浏览 198回答 4
4回答

米脂

将 JSON 转换为类Json2CSharp你得到: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; }}将其存储在代码中的某个位置。使用Newtonsoft.Json包在您的解决方案中安装Newtonsoft.JsonNUGet Package 并将其导入您的代码中:using Newtonsoft.Json;现在,只要您将 json 放在变量中,您就可以根据需要反序列化它string。var yourObject = JsonConvert.DeserializeObject<RootObject>(jsonString);您可以transcript使用以下方式访问您的值:var transcript = yourObject.results[0].alternatives[0].transcript;

慕尼黑5688855

解决方案(不使用 NewtonSoft.Json 等外部库):添加引用System.Web.Extensions。使用程序集System.Web.Script.Serialization;代码:var jsonString = "{\"results\": [ {\"alternatives\": [ {\"transcript\": \"how old are you\", \"confidence\": 0.66882694 } ] }&nbsp; ]}";var jsonDeserialized = serializer.Deserialize<dynamic> (jsonString);Console.WriteLine (jsonDeserialized["results"][0]["alternatives"][0]["transcript"]); // Prints "how old are you"

慕码人8056858

通常,如果我知道 JSON 的结构是什么样的,我会使用类来解析它。但您随时可以将字符串解析为 JSON 对象。using Newtonsoft.Json.Linq;var json=JObject.Parse(YOUR_JSON_STRING)var result = json["results"][0]["alternative"][0]["transcript"].ToString()https://dotnetfiddle.net/KSDcIP此外,您请求的密钥与 JSON 中的密钥不匹配

慕的地10843

您的字符串是 JSON 格式,因此您需要将其解析为对象。为此,您可以使用 JSON.NET。以下是如何将 JSON 字符串解析为动态对象的示例:string source = "{\r\n&nbsp; &nbsp;\"id\": \"100000280905615\", \r\n \"name\": \"Jerard Jones\",&nbsp; \r\n&nbsp; &nbsp;\"first_name\": \"Jerard\", \r\n&nbsp; &nbsp;\"last_name\": \"Jones\", \r\n&nbsp; &nbsp;\"link\": \"https://www.facebook.com/Jerard.Jones\", \r\n&nbsp; &nbsp;\"username\": \"Jerard.Jones\", \r\n&nbsp; &nbsp;\"gender\": \"female\", \r\n&nbsp; &nbsp;\"locale\": \"en_US\"\r\n}";dynamic data = JObject.Parse(source);Console.WriteLine(data.id);.控制台您想要显示哪些数据
随时随地看视频慕课网APP
我要回答