Hashmap转换为JSONObject,hashmap项值中的每个`/`都替换为`\ /`

时间:2018-01-04 13:01:19

标签: java json hashmap

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

enter image description here

2 个答案:

答案 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.....","***":"*****"}