我目前正在使用Watsons强大的语音文字API,它会在麦克风输入上返回JSON(?)。
这是返回JSON文件的代码的一部分:
service.recognizeUsingWebSocket(audio, options, new BaseRecognizeCallback() {
@Override
public void onTranscription(SpeechResults speechResults) {
System.out.println(speechResults);
}
});
我目前正在尝试做的是获取"成绩单" speechResults json的一部分(参见输出),但它似乎不能使用json解析器处理典型的json描述,因为speechResults不是String。
你们有什么想法如何实现这一点?
这是输出:
{
"result_index": 0,
"results": [
{
"final": true,
"alternatives": [
{
"confidence": 0.908,
"timestamps": [
[
"are",
0.03,
0.2
],
[
"you",
0.2,
0.36
]
],
"transcript": "are you ",
"word_confidence": [
[
"are",
0.838
],
[
"you",
0.982
]
]
}
]
}
]
}
答案 0 :(得分:0)
您必须分解整个对象才能到达条目数组。
假设SpeechResults已经是一个已解析的JSONObject。
events: function (start, end, timezone, callback) {
var obj = {};
var Entries = [];
var i = 0;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Service.asmx/getEntries",
dataType: "json", // datatype returned by the webservice
success: function (data) {
var events = $.map(data.d, function (item, value) {
var event = new Object();
var Entry = [];
obj = item.split(';');
Entry.start = obj[0];
Entry.end = obj[1];
Entry.project = obj[3];
Entry.subproject = obj[4];
Entry.task = obj[5];
Entry.id = i++;
Entry.title = i;
Entry.remark = i;
console.log(Entry);
Entries.push(Entry);
});
callback(Entries);
}, //end of Success function
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("StatusEvents: " + textStatus);
alert("Error: " + errorThrown);
}
}); //end of Ajax Function
},
示例I:
SpeechResults.getJSONObject("results").getJSONArray("transcript");
示例II:
//By using javasript json parser
var json = SpeechResults.results;
System.out.println(json.transcript)