поместить объект в ObjectNode Джексона - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь установить Object в ObjectNode Джексона, и я могу это сделать, но я столкнулся с проблемой при установке его в узел объекта. атрибуты 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

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, которые я получаю сейчас

{
  "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"
  }
}

помогите пожалуйста, спасибо

Ответы [ 2 ]

1 голос
/ 12 июля 2020

если @JsonInclude(Include.NON_NULL) dosent работает, используйте

 @JsonInclude(JsonInclude.Include.NON_NULL)

(@JsonSerialize(include = Inclusion.NON_NULL) не используйте это его устаревшее) @JsonInclude (JsonInclude.Include.NON_NULL) publi c 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;


}
0 голосов
/ 12 июля 2020
@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;

Добавить @JsonInclude(Include.NON_NULL) перед определением класса DTO

...