Я пытаюсь разобрать результат из речи Google в текстовый API. Ответ json:
{"result":[]}
{"result":[
{"alternative":[
{"transcript":"hello Google how are you feeling","confidence":0.96274596},
{"transcript":"hello Google how are you today","confidence":0.97388196},
{"transcript":"hello Google how are you picking","confidence":0.97388196},
{"transcript":"hello Google how are you kidding","confidence":0.97388196}
]
,"final":true}]
,"result_index":0
}
Теперь я пытаюсь разобрать его через JObject. Проблема возникает при анализе объекта Result, который появляется дважды, поэтому, как мне проанализировать второй объект Result. Вот мой код, который я пытаюсь:
StreamReader SR_Response = new StreamReader(HWR_Response.GetResponseStream());
Console.WriteLine(SR_Response.ReadToEnd()+SR_Response.ToString());
String json_response = SR_Response.ReadToEnd() + SR_Response.ToString();
JObject joo = JObject.Parse(json_response);
JArray ja = (JArray)joo["result"];
foreach (JObject o in ja)
{
JArray ja2 = (JArray)o["alternative"];
foreach (JObject h in ja2)
{
Console.WriteLine(h["transcript"]);
}
}
Следующее решение, которое я попытался использовать для десериализации кода объекта:
string responseFromServer = (SR_Response.ReadToEnd());
String[] jsons = responseFromServer.Split('\n');
String text = "";
foreach (String j in jsons)
{
dynamic jsonObject = JsonConvert.DeserializeObject(j);
if (jsonObject == null || jsonObject.result.Count <= 0)
{
continue;
}
Console.WriteLine((string)jsonObject["result"]["alternative"][0]["transcript"]);
text = jsonObject.result[0].alternative[0].transcript;
}
Console.WriteLine("MESSAGE : "+text);
String json_response = SR_Response.ReadToEnd() + SR_Response.ToString();
Кроме того, ваш второй код работает в цикле, кажется, разбитым на новые строки. Покажите нам точный пример Json, который вы десериализуете, и фактический полный код вместе с полученным результатом. - person ColinM   schedule 03.02.2017Console.WriteLine()
:Console.WriteLine(SR_Response.ReadToEnd()+SR_Response.ToString());
. Потом тут же пытаешься прочитать еще раз:String json_response = SR_Response.ReadToEnd() + SR_Response.ToString();
. Это не может работать, вам нужно прочитать поток только один раз. - person dbc   schedule 03.02.2017JsonTextReader.SupportMultipleContent = true
- person dbc   schedule 03.02.2017Console.WriteLine(SR_Response.ReadToEnd()+SR_Response.ToString());
распечатывают ответ json, который он написал сверху - person DIGIT   schedule 03.02.2017