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

Java org.json.JSONException:字符14处的未终止对象,java,android,json,Java,Android,Json,我收到的错误消息是: org.json.JSONException: Unterminated object at character 14 of {address: yo test} 我认为应该对字符串进行转义,但在StackOverflow上尝试了所有方法后,结果徒劳。 这是我的代码,非常感谢您的帮助: // src/Activity.java @Override public void onCreate(Bundle savedInstanceState) { super.onC

我收到的错误消息是:

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>
//res/strings.xml
{“地址”:“yo测试”}
如果“地址”是其他类似“test”或“yo”或“123”的内容,则一切正常。
再次感谢

我能找到的唯一解决方案()是用转义引号替换json中的引号

<string name="data">{"address": \"yo test\"}</string>
{“地址”:\“yo test\”}
不过很烦人。不知道是否有更好的解决办法

编辑:

经过进一步挖掘,罪魁祸首似乎是声称

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

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

使用

<string name="data">{"address": \"yo test\"}</string>
{“地址”:\“yo test\”}

否则,json解析器将处理字符串{address:yo test},该字符串不是有效的json字符串,而{address:yo test}则是。

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

看起来您只有一个未转换的字符串。当您尝试转义时发生了什么/您是如何尝试转义的?我尝试了“java.net.URLEncoder.encode(queryStr,UTF-8”);,“TextUtils.htmlEncode(queryStr);”和,但得到了相同的结果。事实上,我不知道我该怎么做才能逃脱这根弦。是的,它是有效的。但是,如果无法更改strings.xml中的数据,该怎么办?谢谢。@Rainbowbreeze如何从fcm响应“url”=当我在FirebaseMessageService OnMessageRecieved中点击send message时动态更改此值,异常:未终止的对象位于..的字符36处。请帮助meString.valueOf(getText(R.string.data))也不起作用。无论如何谢谢你!这是因为getString调用getText,而getText最终会调用去掉引号的本机方法