JSON自动添加反斜杠

时间:2017-04-01 19:59:39

标签: java android json

我正在尝试使用Gson将java对象转换为json。但是当我尝试将其打印出来时。我得到了这个JSON

  

{ “用户”: “{\” 电子邮件\ “:\” abc@gmail.com \”,\ “姓氏\”:\ “LAS \” \ “名称\”:\ “艾米\”, \ “密码\”:\ “qwe123 \”,\ “电话\”:\ “8901245244 \”}“}

我试过

  

s.replace(“\\”“,”\“”)   但它既没有帮助,也没有一个好的方法。

此外,我已经浏览了各种链接,但答案含糊不清。

这是我的User类toString方法

 public class User implements Serializable
{ ...
@Override
public String toString()
{   return "User{" +
            "first_name:" + name+
            ", last_name:" + lastName+
            ", mobile:" + phone+
            ", email:" + email+
            ", password:" + password+
            "}";
}

我猜它甚至没有调用这个toString方法。

以下是我如何转换为JSON

        User u=new User(name,lastName,email,phone,password);
        Gson userGson=new GsonBuilder().create();
        String jo=userGson.toJson(u);

        JSONObject params=new JSONObject();
        params.put("user",jo);
        Log.e("in register",params.toString());

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您已将其转换为JSON字符串,然后将其粘贴到JSON对象中,该对象会自动转义JSON字符串。尝试这样的事情:

User u=new User(name,lastName,email,phone,password);
Gson userGson=new GsonBuilder().create();
JSONObject params = new JSONObject();
params.put("user",user);
Log.e("in register", userGson.toJson(params));

答案 1 :(得分:1)

"No file entered.Run script again. Exiting"是JSON的字符串表示形式,而不是User对象。

  

我尝试过s.replace(“\”“,”\“”)

您不需要这样做... Java正在显示带有转义字符的字符串。如果您看到转义字符,那么您已将现有JSON字符串转换为另一个JSON对象,并再次对其进行字符串化。

params.toString()

为什么不记录这个?

  

我猜它甚至没有调用这个toString方法

好吧,你从未打印过用户对象