Json SpringBoot Rest响应未与jackson反序列化
我是一个运行SpringBoot项目的工程师。在这个项目中,我调用一个外部Rest服务。我已经将响应项建模到bean中。 但是当我得到响应时,数据并没有序列化到bean中。 我想一定有一些配置丢失了,但我找不到什么 我在Maven的配置中添加了configuration spring boot starter测试: rest客户端:Json SpringBoot Rest响应未与jackson反序列化,json,rest,spring-boot,jackson,Json,Rest,Spring Boot,Jackson,我是一个运行SpringBoot项目的工程师。在这个项目中,我调用一个外部Rest服务。我已经将响应项建模到bean中。 但是当我得到响应时,数据并没有序列化到bean中。 我想一定有一些配置丢失了,但我找不到什么 我在Maven的配置中添加了configuration spring boot starter测试: rest客户端: @RunWith(SpringRunner.class) @SpringBootTest public class RestClientTest { @A
@RunWith(SpringRunner.class)
@SpringBootTest
public class RestClientTest {
@Autowired
private RestTemplateBuilder restTemplate;
@Test
public void sayHello() {
System.out.println("Hello");
assert(true);
}
@Test
public void testGetEmployee() {
RestTemplate template = restTemplate.build();;
HttpHeaders headers = new HttpHeaders();
List<MediaType> types = new ArrayList<MediaType>();
types.add(MediaType.APPLICATION_JSON);
types.add(MediaType.APPLICATION_XML);
headers.setAccept(types);
headers.set("Authorization", "Bearer gWRdGO7sUhAXHXBnjlBCtTP");
HttpEntity<Items> entity = new HttpEntity<Items>(headers);
String uri = "https://mytest.com/employees";
//ResponseEntity<String> rec = template.exchange(uri, HttpMethod.GET, entity, String.class);
//System.out.println("Received: " + rec);
ResponseEntity<Items> rec = template.exchange(uri, HttpMethod.GET, entity, Items.class);
System.out.println("Received: " + rec);
}
}
你看到我在这里缺少什么了吗
谢谢
Gilles您可能需要将其添加到ObjectMapper中:
mapper.configure(反序列化功能.UNWRAP\u ROOT\u值,true)代码>
并在您的实体上添加@JsonRootName(“item”)
您实现的方法将尝试将数据反序列化到Items类中。但它没有反序列化所需的属性。当您需要通过rest模板交换获取数据列表时,可以按如下方式获取它们
以数组形式获取数据并将其转换为arrayList
Item[] itemArray = template.exchange(uri, HttpMethod.GET, entity, Item[].class).getBody();
List<Item> itemList = Arrays,asList(itemArray);
Item[]itemArray=template.exchange(uri,HttpMethod.GET,entity,Item[].class).getBody();
List itemList=数组,asList(itemArray);
或
使用ParameteredTypeReference以列表形式获取数据
ResponseEntity<List<Item>> itemList = template.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<List<Item>>() {});
List<Item> itemList = template.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<List<Item>>() {}).getBody(); // access list directly
ResponseEntity itemList=template.exchange(uri,HttpMethod.GET,entity,new parametedTypeReference(){});
List itemList=template.exchange(uri,HttpMethod.GET,entity,new ParameterizedTypeReference(){})。getBody();//直接访问列表
Items类不是必需的。
Item[] itemArray = template.exchange(uri, HttpMethod.GET, entity, Item[].class).getBody();
List<Item> itemList = Arrays,asList(itemArray);
ResponseEntity<List<Item>> itemList = template.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<List<Item>>() {});
List<Item> itemList = template.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<List<Item>>() {}).getBody(); // access list directly