C# 在C语言中解析JSON响应#
在对api进行查询之后,我得到一个json响应 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
{
"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结果(我将其作为字符串*):
- 我是新来的。转换为字符串只称为序列化。为什么反序列化在这里有帮助李>
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粘贴为类”功能所打动!