我有一个物体如下
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(具有所有值)时,如下所示
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中获取完整的对象
最佳答案
您的课程结构似乎有些偏离。为什么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。