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最终会调用去掉引号的本机方法