C# 在C中解析JArray对象#

C# 在C中解析JArray对象#,c#,json.net,C#,Json.net,我有一个名为response的JArray对象,其值为: {[ {"alternatives": [ { "transcript": "some text", "confidence": 0.77053386 } ] }, {"alternatives": [ { "transcript": " some other text", "confidence": 0.84036005

我有一个名为
response
的JArray对象,其值为:

{[
  {"alternatives": [
      {
       "transcript": "some text",
       "confidence": 0.77053386
      }
    ]
  },
  {"alternatives": [
      {
       "transcript": " some other text",
       "confidence": 0.84036005
      }
    ]
  }
]}
我正在尝试访问
转录本
值并将它们连接在一起。这是我的代码:

 var results = response.ToObject<IList<Alternatives>>();
 string mostConfidentTranscript = "";
 foreach (var r in results)
      mostConfidentTranscript += r.transcript + "\n";

代码编译时没有错误,但是,
results
是一个空列表。我错过了什么?感谢您的帮助。

有效负载不正确,如果您的意思是发布对象列表,最好改为:

{"value":[...]}
然后您可以将其作为JObject读取,并将其值作为JArray获取

using Newtonsoft.Json.Linq;

result = response.Content.ReadAsAsync<JObject>().Result;
var results = result["value"] as JArray;
使用Newtonsoft.Json.Linq;
结果=response.Content.ReadAsAsync().result;
var结果=结果[“值”]为JArray;

提供的JSON无效。稍微修改一下,这就是我的工作-

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

public class RootObject{
    public List<Alternative> Alternatives{get;set;}
}

var json = "[{'alternatives':[{'transcript':'some text','confidence':0.77053386}]},{'alternatives':[{'transcript':' some other text','confidence':0.84036005}]}]";
var res = JsonConvert.DeserializeObject<List<RootObject>>(json);
// output : "some text: some other text"
Console.WriteLine(res[0].Alternatives[0].transcript + ":" + res[1].Alternatives[0].transcript);
公共类替代方案
{
公众双重信心{get;set;}
公共字符串转录本{get;set;}
}
公共类根对象{
公共列表选项{get;set;}
}
var json=“[{'alternations':[{'transcript':'some text','confidence':0.77053386}],{'alternations':[{'transcript':'some other text','confidence':0.84036005}]”;
var res=JsonConvert.DeserializeObject(json);
//输出:“一些文本:一些其他文本”
Console.WriteLine(res[0]。备选方案[0]。转录本+”:“+res[1]。备选方案[0]。转录本);

您似乎有多个对象,每个对象都包含一个带有单个
备选方案的数组。这是一个非常奇怪的JSON结构。。。那部分修好了吗?是什么生成了JSON?@JonSkeet这是http post请求的响应,我无法真正更改它。再次查看,您发布的JSON无效。它不是有效的数组,因为它被包装在
{}
中。它不是有效的对象,因为紧靠
{
的是一个值(数组)而不是一个属性名。这确实是您收到的JSON吗?该JSON无效。如果上载到,您将看到一个错误,
{[
无效。a
{
表示对象的开头,该对象是一组无序的名称/值对。但是
[
表示数组的开头,它是一个值;首先应该有一个属性名。有关非常简单的JSON标准的描述,请参阅。最好先使用JSON.net对其进行反序列化,然后做更多您想要做的事情
public class Alternative
{
    public double confidence { get; set; }
    public string transcript { get; set; }
}

public class RootObject{
    public List<Alternative> Alternatives{get;set;}
}

var json = "[{'alternatives':[{'transcript':'some text','confidence':0.77053386}]},{'alternatives':[{'transcript':' some other text','confidence':0.84036005}]}]";
var res = JsonConvert.DeserializeObject<List<RootObject>>(json);
// output : "some text: some other text"
Console.WriteLine(res[0].Alternatives[0].transcript + ":" + res[1].Alternatives[0].transcript);