【问题标题】:Unable to access JSONArray无法访问 JSONArray
【发布时间】:2016-01-19 07:08:35
【问题描述】:

我正在为 android 开发一个 phonegap 插件。在这里,我从callBackContext.sendPluginResult(result); 返回一个JSONArray。下面是我如何开发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)

【问题讨论】:

  • 是否有任何名为“test”的元素?
  • @PankajNimgade:是的。是DIV的id
  • 应该是div的id
  • @Sachin:是的。是身份证
  • @Tracer:你累了吗json[0].result

标签: javascript android json cordova


【解决方案1】:

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

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

【讨论】:

  • 这应该是一个建议兄弟,因为您没有提供解决方案,而是提供处理数据的最佳方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 2016-03-14
  • 1970-01-01
  • 2020-08-22
  • 2013-12-23
相关资源
最近更新 更多