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

iFo*_*sts 7 java android json

我得到的错误信息是:

org.json.JSONException: Unterminated object at character 14 of {address: yo test}
Run Code Online (Sandbox Code Playgroud)

我认为我应该逃避字符串,但在尝试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}
    }
}
Run Code Online (Sandbox Code Playgroud)

和...

// res/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="data">{"address": "yo test"}</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

如果"地址"是"test"或"yo"或"123"之类的东西,那么一切正常.再次感谢!!

I82*_*uch 14

我能找到的唯一解决方案(Android:带有空格的Json字符串给出"Unterminated object at"异常)是用转义引号替换json中的引号

<string name="data">{"address": \"yo test\"}</string>
Run Code Online (Sandbox Code Playgroud)

虽然烦人.不知道有没有更好的解决方案.

编辑:

经过多一点挖掘,看起来罪魁祸首就是getString声称的方法

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

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