【问题标题】:String to JsonObject returns null到 JsonObject 的字符串返回 null
【发布时间】:2014-05-08 07:41:26
【问题描述】:

我有以下方法将样本String解析为JSONObject

private JSONObject test() {
    try {

        String responseData = "{\"m_tani\":[{\"tani_cd\":\"02\",\"tani_nm\":\"cs\"},{\"tani_cd\":\"03\",\"tani_nm\":\"pc\"}]}";
        Log.i("Json", responseData.toString());
        JSONObject json = new JSONObject(responseData);

        return json;

    } catch (Exception e) {
        e.printStackTrace();
        Log.i("Json", "exception");
    }
    Log.i("Json", null);
    return null;
}

响应数据是:

{"m_tani":[{"tani_cd":"02","tani_nm":"cs"},{"tani_cd":"03","tani_nm":"pc"}]}

当我调试它时,它从JSONObject json = new JSONObject(responseData); 行跳转到return null;,而不是return json;catch(Exception e)

我不知道为什么,请帮我解决这个问题

【问题讨论】:

  • 您是否尝试实际打印出结果,看看函数返回什么? Eclipse 调试步骤在多个返回语句上可能会以这种方式运行,但如果您的代码是正确的,那么方法的输出仍然是正确的! @Simulant,也不例外,这个问题已经说清楚了。
  • 我试过你的代码,发现工作正常。如果有,请发布更多详细信息。
  • 您是否有机会在设备中调试旧代码并且行号不匹配。跳跃通常是由此引起的。
  • 我卸载了这个应用程序并重新安装,它工作正常。但是,我还是不知道为什么。
  • 在第一行声明JSONObject并更改最后一行return json;

标签: android json


【解决方案1】:

这发生在逐步调试期间,当您从一个方法有多个返回点时。

在将 java 字节码转换为 dalvik 时,返回调用会被合并(出于优化原因?),而当您调试代码时,可能会出现您找到错误的代码,或者调用了多个代码。但这并没有发生,您的代码是正确的,只是调试时的样子。

更多参考可以看this post

【讨论】:

  • 你是对的。虽然它跳转到“return null;”调试时的声明。结果不为空。
  • 如果有帮助我很高兴。这是一件非常烦人的事情,但你可以习惯它。最终,dalvik 字节码中的步骤可能会被解释为它们的真正含义,这个问题就消失了。
【解决方案2】:

试试这个代码

    private JSONObject test() {
    try {
        String responseData = "{\"m_tani\":[{\"tani_cd\":\"02\",\"tani_nm\":\"cs\"},{\"tani_cd\":\"03\",\"tani_nm\":\"pc\"}]}";
        Log.i("Json", responseData.toString());
        JSONObject json = new JSONObject(responseData);
        return json;
    } catch (JSONException e) {
        e.printStackTrace();
        Log.i("Json", "exception");
        return null;
    }
}

【讨论】:

  • 请至少给出拒绝投票的理由
猜你喜欢
  • 2017-09-08
  • 2014-04-01
  • 2012-10-09
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
相关资源
最近更新 更多