【问题标题】:Android JSON Exception安卓 JSON 异常
【发布时间】:2011-09-26 13:59:57
【问题描述】:

我在解析通过服务器接收的 JSON 数据时遇到了一点问题。我有两个 JsonObjects,它们总是没有数据,只是在某些情况下,但我需要每次都检查它们是否为空。我m 使用此代码执行此操作:

String jsonData = new String(contentBuffer,"UTF-8");
            Log.w("JSONDATA","JSONDATA VALID OR NOT : "+jsonData);
            json = new JSONObject(jsonData);
            JSONObject jsonObj =(JSONObject) new JSONTokener(jsonData).nextValue();

if(jsonObj.getString("collection_id")==null){
                values.put("collection_id", 0);
            }else {
                collectionId = Integer.parseInt(jsonObj.getString("collection_id"));
                values.put("collection_id", collectionId);
            }   
            Log.w("COLLECTION ID ","SHOW COLLECTION ID : "+collectionId);

            if(jsonObj.getString("card_id")!=null){
                values.put("card_id", cardId);
            }else {
                values.put("card_id", 0);
            }
            Log.w("CARD ID ","SHOW CARD ID : "+cardId);

我希望它不要抛出异常,只是检查collection_id 是否为null,在数据库中保存 0,如果不保存它的值。但是使用这段代码会抛出 JSONException。

有什么办法解决这个问题吗?

【问题讨论】:

  • 你能发布堆栈跟踪吗?您能告诉我们您在JSONDATA 日志条目中记录的内容吗?

标签: android json exception


【解决方案1】:

使用

   if ( jsonObject.has("collection_id"))

这将检查 jsonObject 中是否存在 collection_id 键。

【讨论】:

    【解决方案2】:

    你也可以使用

    collectionId = jsonObj.optInt("collection_id", 0);
    

    如果存在则将值作为 int 获取,如果不存在则返回 0。

    【讨论】:

      猜你喜欢
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多