将对象放入 Jackson 的 ObjectNode 中
to put an object in a ObjectNode of Jackson
我正在尝试在 Jackson 的 ObjectNode
中设置一个 Object
,我能够做到这一点,但是我在将其设置为对象节点时遇到了问题。 null
属性也来了,我试过使用 GSON,但请求中出现了 " \"
。
public class Testing4 {
public static void main(String[] args) throws JsonProcessingException {
ObjectNode request = null;
ObjectMapper mapper = new ObjectMapper();
request = mapper.createObjectNode();
RequestParam requestParam = new RequestParam();
requestParam.setCustomerName("sachin");
requestParam.setCustomerOrderNumber("12344556");
request.set("request",mapper.convertValue(requestParam, JsonNode.class));
request.put("FatherName","jithin");
String req = mapper.createObjectNode().set("request", request).toString();
System.out.println(req);
}
private static Comparator<? super String> kFirst() {
return (s1, s2) -> "k".equals(s1) ? -1 : "k".equals(s2) ? 1 : 0;
}
}
DTO class
public class RequestParam implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String orderDueDate;
private String originatingSystemOrderId;
private String objectId;
private String taskTypeId;
private String customerId;
private String customerName;
private String customerOrderNumber;
private Dataset dataset;
}
在这里我可以获得 o/p 但 o/p 包含 null
分配以及我将如何删除 null
分配
o/p 我现在
{
"request": {
"request": {
"orderDueDate": null,
"originatingSystemOrderId": null,
"objectId": null,
"taskTypeId": null,
"customerId": null,
"customerName": "sachin",
"customerOrderNumber": "12344556",
"dataset": null
},
"FatherName": "jithin"
}
}
我想要的o/p
{
"request": {
"request": {
"customerName": "sachin",
"customerOrderNumber": "12344556"
},
"FatherName": "jithin"
}
}
请帮忙,谢谢
@JsonInclude(Include.NON_NULL)
public class RequestParam implements Serializable {
private static final long serialVersionUID = 1L;
private String orderDueDate;
private String originatingSystemOrderId;
private String objectId;
private String taskTypeId;
private String customerId;
private String customerName;
private String customerOrderNumber;
private Dataset dataset;
}
您需要添加导入语句 - import com.fasterxml.jackson.annotation.JsonInclude;
在DTOclass定义前添加@JsonInclude(Include.NON_NULL)
of @JsonInclude(Include.NON_NULL)
不起作用然后使用
@JsonInclude(JsonInclude.Include.NON_NULL)
(@JsonSerialize(include = Inclusion.NON_NULL)
不要使用它,它已被弃用)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RequestParam 实现 Serializable {
private static final long serialVersionUID = 1L;
private String orderDueDate;
private String originatingSystemOrderId;
private String objectId;
private String taskTypeId;
private String customerId;
private String customerName;
private String customerOrderNumber;
private Dataset dataset;
}
我正在尝试在 Jackson 的 ObjectNode
中设置一个 Object
,我能够做到这一点,但是我在将其设置为对象节点时遇到了问题。 null
属性也来了,我试过使用 GSON,但请求中出现了 " \"
。
public class Testing4 {
public static void main(String[] args) throws JsonProcessingException {
ObjectNode request = null;
ObjectMapper mapper = new ObjectMapper();
request = mapper.createObjectNode();
RequestParam requestParam = new RequestParam();
requestParam.setCustomerName("sachin");
requestParam.setCustomerOrderNumber("12344556");
request.set("request",mapper.convertValue(requestParam, JsonNode.class));
request.put("FatherName","jithin");
String req = mapper.createObjectNode().set("request", request).toString();
System.out.println(req);
}
private static Comparator<? super String> kFirst() {
return (s1, s2) -> "k".equals(s1) ? -1 : "k".equals(s2) ? 1 : 0;
}
}
DTO class
public class RequestParam implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String orderDueDate;
private String originatingSystemOrderId;
private String objectId;
private String taskTypeId;
private String customerId;
private String customerName;
private String customerOrderNumber;
private Dataset dataset;
}
在这里我可以获得 o/p 但 o/p 包含 null
分配以及我将如何删除 null
分配
o/p 我现在
{
"request": {
"request": {
"orderDueDate": null,
"originatingSystemOrderId": null,
"objectId": null,
"taskTypeId": null,
"customerId": null,
"customerName": "sachin",
"customerOrderNumber": "12344556",
"dataset": null
},
"FatherName": "jithin"
}
}
我想要的o/p
{
"request": {
"request": {
"customerName": "sachin",
"customerOrderNumber": "12344556"
},
"FatherName": "jithin"
}
}
请帮忙,谢谢
@JsonInclude(Include.NON_NULL)
public class RequestParam implements Serializable {
private static final long serialVersionUID = 1L;
private String orderDueDate;
private String originatingSystemOrderId;
private String objectId;
private String taskTypeId;
private String customerId;
private String customerName;
private String customerOrderNumber;
private Dataset dataset;
}
您需要添加导入语句 - import com.fasterxml.jackson.annotation.JsonInclude;
在DTOclass定义前添加@JsonInclude(Include.NON_NULL)
of @JsonInclude(Include.NON_NULL)
不起作用然后使用
@JsonInclude(JsonInclude.Include.NON_NULL)
(@JsonSerialize(include = Inclusion.NON_NULL)
不要使用它,它已被弃用)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RequestParam 实现 Serializable {
private static final long serialVersionUID = 1L;
private String orderDueDate;
private String originatingSystemOrderId;
private String objectId;
private String taskTypeId;
private String customerId;
private String customerName;
private String customerOrderNumber;
private Dataset dataset;
}