如何在使用Gson()时避免反斜杠.toJson

4urapxun  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(528)

所以我有一个像www.example.com这样的rest模型Org.java,其中有一个String类型的字段。

public class Org {
   private String employee;
   ...
}

public class Employee {
    private final String id;
     private final type;
     ....
}

在返回API响应时,我需要返回employe字段的employee对象列表,因此在我的后端中,我得到了employee对象列表。
List <Employee> employeeList = getEmployeesList(..);

**注意:**employeeList永远不会为空。

然后我尝试将employeeList转换为JSON到String,然后使用以下方法在API模型中设置。

方法1:

String employees= new Gson().toJson(employeeList);
org.setEmployee(employees);

方法2:

String employees= (new Gson().toJson(employeeList)).replaceAll("\\","");
org.setEmployee(employees);

问题是在每个双引号前面都加了一个反斜杠,我不想在id、type和它的值前面加\。
有谁能帮我解决这个问题吗?
目前我得到的

{
"employee": [{\"id\":\"156543\",\"type\":\"employee\"}]
}

而我想要的是下面

{
"employee": [{"id":"156543","type":"employee"}]
}
s1ag04yj

s1ag04yj1#

出现此问题是因为您执行了两次序列化。第一步生成一些双引号,第二步希望将双引号序列化为\"字符。
在这种情况下,我建议您创建最终对象并将其序列化。例如,您应该进行如下更改:

class Org {
   private List<Employee> employee = new ArrayList<>();

   public void add(Employee employee) {
       this.employee.add(employee);
   }
}

class Employee {
   private String id;
   private String type;

   Employee(String id, String type) {
      this.id = id;
      this.type = type;
   }
}

Org org = new Org();
org.add(new Employee("156543", "employee"));

String result = new Gson().toJson(org);

结果应如下所示:

{"employee":[{"id":"156543","type":"employee"}]}
b4qexyjb

b4qexyjb2#

与我之前使用的方法无关。但是我通过将我的employee字段的数据类型从String转换为Object,解决了上述问题。通过这种方式,它在请求时接受String,在响应时接受Object列表。

相关问题