这是我的字符串
String currentTokenNo = "/SUeSjUf0A0aLFr+wVIZbw==\nLmmWtgHZ90yH0NBoATYB/A"
我已将此字符串添加到我的
JsonObject
中,它是com.google.gson.JsonObject软件包的类 JsonObject jsonToSubmit = new JsonObject();
try {
jsonToSubmit.addProperty("token", currentTokenNo);
} catch (Exception e) {
e.printStackTrace();
}
但是当我记录我的
String
和JsonObject
时Log.d("mainactivityjson", "Current Token No : "+currentTokenNo );
Log.d("mainactivityjson", "jsonToSubmit : "+jsonToSubmit);
我找到了结果
D/mainactivityjson: Current Token No : "/SUeSjUf0A0aLFr+wVIZbw==\nLmmWtgHZ90yH0NBoATYB/A"
D/mainactivityjson: jsonToSubmit : {"token":"\"/SUeSjUf0A0aLFr+wVIZbw==\\nLmmWtgHZ90yH0NBoATYB/A\""}
现在,我的问题是:
为什么将这些引号和斜杠添加到
JsonObject
的值中?有什么适当的理由吗?这确实阻碍了在服务器端检查String值的过程。
我已经做了一个临时解决方案来完成任务,方法是从两侧修剪单个字符,例如按照
jsonToSubmit.addProperty("token",currentTokenNo.substring(1,currentTokenNo.length()-1));
这完美地工作了,但我不认为这对 future 是一个更好的主意!!!
附加信息:
变量
currentTokenNo
并非如上所示直接声明,而是从SharedPreferences
检索的;如果直接声明,则一切正常。String currentTokenNo = preferences.getString(LOGINCRED_TOKEN,"");
如果直接声明相同的变量,则一切正常。
任何帮助将不胜感激。
最佳答案
根据您的注释和logcat信息,从SharedPreferences
获得的实际值是"/SUeSjUf0A0aLFr+wVIZbw==y9iWl1SSrUe9zRQppENMNA"
(带有引号),而不是/SUeSjUf0A0aLFr+wVIZbw==y9iWl1SSrUe9zRQppENMNA
。这就是为什么你得到jsonToSubmit : {"token":"\"/SUeSjUf0A0aLFr+wVIZbw==y9iWl1SSrUe9zRQppENMNA\""}
更新:
我更喜欢以下方式:
jsonToSubmit.addProperty("token", currentTokenNo.replaceAll("\"",""));
如果您还想删除斜杠,请使用:
jsonToSubmit.addProperty("token", currentTokenNo.replaceAll("\"","").replaceAll("/",""));
希望能帮助到你!
关于android - jsonObject.addProperty方法向其值添加不必要的引号和斜杠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34576024/