将HashMap
转换为JSONObject
时,字符串中的每个/
都将替换为此\/
为什么会这样?对此有何解决方案?
我的字符串是
String sumValue= "mZftaLXj7UN19zxc/7n/UZdf....";
但我得到这样的
D/b: getBody{"****":"*****","*****":"***",SUMHASH":"mZftaLXj7UN19zxc\/7n\/UZdf****"}
我试过这样的
public byte[] getBody() {
String sumValue= "mZftaLXj7UN19zxc/7n/UZdf.....";
HashMap<String, String> params2 = new HashMap<String, String>();
params2.put("***", "*****");
params2.put("***", "*****");
params2.put("SUMHASH", sumValue);
Log.d(TAG, "getBody" + new JSONObject(params2));
try {
return new JSONObject(params2).toString().getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}}
以下是执行
时的输出System.out.println("getBody" + new JSONObject(params2));
答案 0 :(得分:2)
它只是结果JSON的文本表示。真正的字段 SUMHASH 不包含额外的&#39; \&#39;。
将对象 new JSONObject(params2)放到新变量中,并尝试从该对象获取字段 SUMHASH 的值,并看到该字段的原始值。
答案 1 :(得分:0)
Anton Tupy是对的。输出中没有其他'\'。您可以使用System.out.println()来测试它。
System.out.println("getBody" + new JSONObject(params2));
这是输出
getBody{"SUMHASH":"mZftaLXj7UN19zxc/7n/UZdf.....","***":"*****"}