我有一个如下对象
public class Employee{
String firstName;
String lastName;
String address;
String phoneNumber;
List<Contacts> Contacts;
}
public class Contacts{
String name;
String Address;
String phoneNumber;
}
现在考虑使用应用程序内部的值设置Employee对象,当我尝试将名称 empObject (包含所有值)的对象转换为JSON时,如下所示
ObjectMapper mapper= new ObjectMapper();
String employeeObjToJSON =mapper.writeValueAsString(empObject);
System.out.println("JSON employee Object" +employeeObjToJSON)
我得到了值
{"firstName":"Sawyer","lastName":"Ford","phone":"4555454553", "address": "SNJFJJFJ", "contacts":[{"phoneNumber": "122333"},{"phoneNumber":"122222"}]}
仅为内部对象打印电话号码。我应该如何获得JSON中的完整对象
答案 0 :(得分:3)
你的班级结构似乎有些偏差。为什么Employee类将联系人列表作为String而不是Contact对象列表?
我建议你像这样更改你的Employee类:
public class Employee {
String firstName;
String lastName;
String address;
String phoneNumber;
List<Contact> contacts;
}
public class Contact {
String name;
String address;
String phoneNumber;
}
使用这个类结构,使用ObjectMapper将它们映射到JSON时不应该有任何问题。
修改强> 关于未显示的空字段,正如我在评论中所写,默认情况下杰克逊应该序列化它们,你应该在响应中看到它们。
如果不是这种情况,可能是某个地方覆盖了此序列化功能...尝试将以下配置设置为对象映射器,看看它是否有效:mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS)
。
或者,您也可以在您的Employee类和Contact类中使用Jackson注释@JsonInclude(JsonInclude.Include.ALWAYS)
,就像ibenjelloun在他/她的回答中所建议的那样。
答案 1 :(得分:2)