spring引导

5m1hhzi4  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(417)

我目前正在开发一个与api集成的sdk(作为客户机)。我的问题是(我甚至不确定这是一个问题),但我希望我的请求只包含初始化的参数。现在如何生成它们的示例:

  1. {
  2. "scenarioKey":"",
  3. "bulkId":"",
  4. "destinations":[
  5. {
  6. "messageId":"xxxxx",
  7. "to":{
  8. "phoneNumber":""
  9. }
  10. }
  11. ],
  12. "sms":null
  13. }

sms参数从未启动,因此我不希望它包含在请求正文中,这是一种不使用此参数“sms”的请求方式吗?
顺便说一下,我正在使用httpentity:

  1. HttpEntity<Object> entity = new HttpEntity<>(bodyObject, headers);
oknwwptz

oknwwptz1#

SpringBoot允许简单配置它在application.properties文件中使用的jackson objectmapper。
文档中描述了支持的属性(https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-自定义对象Map器(objectmapper)
明确地 spring.jackson.default-property-inclusion=non_null 在application.properties中应该做到这一点。
如果要对特定的类或属性执行此操作,jackson有注解 @JsonInclude(Include.NON_NULL) .

tyu7yeag

tyu7yeag2#

如果您正在使用jackson序列化json,那么应该查看 setSerializationInclusion() 上的方法 ObjectMapper https://fasterxml.github.io/jackson-databind/javadoc/2.7/com/fasterxml/jackson/databind/objectmapper.html#setserializationinclusion(com.fasterxml.jackson.annotation.jsoninclude.include)
下面是一个简单的测试用例,它可以防止 sms json输出中包含的字段:

  1. @Test
  2. public void testJson() throws Exception {
  3. Addr addr = new Addr();
  4. addr.phoneNumber = "";
  5. Destination destination = new Destination();
  6. destination.messageId = "";
  7. destination.to = addr;
  8. Scenario scenario = new Scenario();
  9. scenario.scenarioKey = "";
  10. scenario.bulkId = "";
  11. scenario.destinations = Arrays.asList(destination);
  12. ObjectMapper mapper = new ObjectMapper()
  13. .enable(SerializationConfig.Feature.INDENT_OUTPUT)
  14. .setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
  15. System.out.println(mapper.writeValueAsString(scenario));
  16. }
  17. public static class Scenario {
  18. public String scenarioKey;
  19. public String bulkId;
  20. public List<Destination> destinations;
  21. public String sms;
  22. }
  23. public static class Destination {
  24. public String messageId;
  25. public Addr to;
  26. }
  27. public static class Addr {
  28. public String phoneNumber;
  29. }
展开查看全部

相关问题