org.json.JSONException:字符 14 处的未终止对象

新手上路,请多包涵

我收到的错误信息是:

 org.json.JSONException: Unterminated object at character 14 of {address: yo test}

我认为我应该对字符串进行转义,但在尝试了 StackOverflow 上的所有方法后无济于事。

这是我的代码,非常感谢您的帮助:

 // src/Activity.java
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try{
        String str = getString(R.string.data);
        JSONObject jsonObj = new JSONObject(str);
    }
    catch(Exception e){
        Log.d("iLoveDrinkActivity", e.toString());
        // org.json.JSONException: Unterminated object at character 14 of {address: yo test}
    }
}

和…

 // res/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="data">{"address": "yo test"}</string>
</resources>

如果“地址”是“test”或“yo”或“123”之类的其他内容,则一切正常。再次感谢!!

原文由 iForests 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

我能找到的唯一解决方案( Android: Json string with spaces gives “Unterminated object at” exception )是用转义引号替换 json 中的引号

<string name="data">{"address": \"yo test\"}</string>

虽然很烦人。想知道是否有更好的解决方案。

编辑:

经过更多的挖掘之后,罪魁祸首似乎是 getString 声称的方法

返回与特定资源 ID 关联的字符串值。它将去除任何样式化的文本信息。

样式文本的剥离发生在本机代码中,所以我不明白为什么它会抛出引号,但看起来确实如此。

原文由 I82Much 发布,翻译遵循 CC BY-SA 3.0 许可协议

与问题没有直接关系,但在尝试解析格式错误的 json 时出现此错误。我缺少两个属性之间的逗号。 (使用 GSON)

原文由 jgreen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题