为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕少森 2023-09-24 16:31:37
我尝试从 Google API 发出的请求的 JSON 对象中获取值。我的目标是从成绩单中获取数据。这是 JSON 文件。{  "results": [    {      "alternatives": [        {          "transcript": "how old are you",          "confidence": 0.66882694        }      ]    }  ]}我尝试使用它来获取输出。但这不起作用。var result = ["result"][0]["alternative"][0]["transcript"].ToString()当我查询数据时,它不显示任何内容,只是空字符串。
查看完整描述

4 回答

?
米脂

TA贡献1836条经验 获得超3个赞

将 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;


查看完整回答
反对 回复 2023-09-24
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

解决方案(不使用 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"



查看完整回答
反对 回复 2023-09-24
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

通常,如果我知道 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 中的密钥不匹配


查看完整回答
反对 回复 2023-09-24
?
慕的地10843

TA贡献1785条经验 获得超8个赞

您的字符串是 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);

.

控制台您想要显示哪些数据


查看完整回答
反对 回复 2023-09-24
  • 4 回答
  • 0 关注
  • 212 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信