无法访问JSONArray

时间:2016-01-19 07:08:36

标签: javascript android json cordova

我正在为android开发一个phonegap插件。在这里,我将从JSONArray返回callBackContext.sendPluginResult(result);。以下是我开发JSONArray

的方法
private JSONArray makeJsonObject(String type, String result, float confidence)
{
    JSONObject recogResult = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    //JSONObject jsonObject = new JSONObject();

    try
    {
        recogResult.put("type", type);
        recogResult.put("result", result);
        recogResult.put("confidence", confidence);

        jsonArray.put(recogResult);
        //jsonObject.put("recognitionResults", recogResult);

    }
    catch(JSONException  e)
    {
        Log.d(LOG_TAG, "JSON Error", e);
    }

    return jsonArray;
}

上面的方法会产生如下结果。

[{"type":"interim","result":"da","confidence":0}]

以下是我通过javascript阅读的方式。

 function startRecognition()
 {
      SpeechRecPlug.startRecognition(function(msg){
          var data = msg;
      var json = JSON.parse(data);
      var div = document.getElementById("test");
      div.innerHTML = div.innerHTML + " "+ json[1].result;

    });
 }

但问题是,在HTML中,没有任何内容被打印出来。不确定我尝试使用Javascript打印的方式是否存在问题。

请问好吗?

更新 我注意到我从android控制台获取以下消息

01-19 12:54:57.946: I/chromium(30192): [INFO:CONSOLE(310)] "Error in Success callbackId: SpeechRecPlug1992021962 : SyntaxError: Unexpected token o", source: file:///android_asset/www/cordova.js (310)

1 个答案:

答案 0 :(得分:0)

在div元素中打印之前检查jsonArray中的属性。

if(jsonArray.hasOwnProperty('type') ){ 
         document.getElementById("test").innerHTML = json[0].result;        
     }