вы можете использовать в вашем application.properties/yml эту конфигурацию: spring.jackson.default-property-inclusion=non_null
, а затем я попытался воспроизвести подобную конфигурацию, и я нашел в вашей строке ответа
{"code":0,"message":null,"data":"{\"companyId\":\"1\",\"tinyIdList\":[\"2\"],\"carId\":\"3\"}"}
синтаксическая ошибка jeson должна быть {\"code\":0,\"message\":null,\"data\":{\"companyId\":\"1\",\"tinyIdList\":[\"2\"],\"carId\":\"3\"}}
в противном случае поле данных рассматривается как строка, а не объект данных.
если вы хотите попробовать себя, вы можете попробовать этот код:
package com.example.jacksondemo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.RequestEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@SpringBootApplication
public class JacksonDemoApplication {
public static void main(String[] args) {
SpringApplication.run(JacksonDemoApplication.class, args);
}
}
@lombok.Data
@JsonIgnoreProperties(ignoreUnknown = true)
class QueryTinyListResponse implements Serializable {
//getter setter
private Data data;
private int code;
private String msg;
}
@lombok.Data
class Data implements Serializable {
private String companyId;
private List<String> tinyIdList=new ArrayList<String>();
private String carId;
//getter setter getCompanyId() etc..
}
@RestController
class QueryTinyListResponseController {
@PostMapping
public String query(){
return "{\"code\":0,\"message\":null,\"data\":{\"companyId\":\"1\",\"tinyIdList\":[\"2\"],\"carId\":\"3\"}}";
}
}
@RestController
class QueryTinyListResponseControllerClient {
@GetMapping("/client")
public QueryTinyListResponse query(){
RestTemplate restTemplate = new RestTemplate();
return restTemplate.postForEntity("http://localhost:8080/", RequestEntity.EMPTY, QueryTinyListResponse.class).getBody();
}
}
application.properties
spring.jackson.default-property-inclusion=non_null