这是我的字符串

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();
     }

但是当我记录我的StringJsonObject
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/

10-14 23:42