私が言及したルート要素 I を持つ json 文字列を期待する maven SpringBoot マイクロサービス アプリケーションに取り組んでいますが、ArrayList を持つ json 文字列をルート要素として与えています。
非常に多くの同様の質問が報告されていますが、どの解決策も私にとってはうまくいきません。
期待されるのは
{
"TestClass": [
{
"itemId": "000023",
"owner": "XYZ",
"name": "BMW"
},
{
"itemId": "000022",
"owner": "PQR",
"name": "GM"
},
{
"itemId": "000021",
"owner": "xyz",
"name": "Ford"
}
]
}
実際のjson応答は次のようになります
{
"ArrayList": [
{
"itemId": "000023",
"owner": "XYZ",
"name": "BMW"
},
{
"itemId": "000022",
"owner": "PQR",
"name": "GM"
},
{
"itemId": "000021",
"owner": "xyz",
"name": "Ford"
}
]
}
POJO モデルクラス
import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName("TestClass")
public class TestClass {
private String itemId;
private String owner;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getItemId() {
return itemId;
}
public void setItemId(String itemId) {
this.itemId = itemId;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
}
package com.apps.partnerecosystem.rest;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.teamcenter.hello.Hello;
@Named
@Path("/")
public class TestClassRest {
private static List<TestClass> clients = new ArrayList<TestClass>();
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<TestClass> getClientes() {
return clients;
}
@GET
@Path("list")
@Produces(MediaType.APPLICATION_JSON)
public List<TestClass> getList() {
List<TestClass> list = new ArrayList<TestClass>();
TestClassitem1 = new TestClass();
item1.setItemId("Test");
item1.setOwner("deshpapr");
item1.setName("Test");
list.add(item1);
list.add(item1);
return list;
}
}
ApplicationConfig ファイル
package com.apps.partnerecosystem.comappspartnerecosystem;
import javax.inject.Named;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.SerializationFeature;
@Configuration
public class ApplicationConfig {
@Named
static class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
this.packages("com.apps.partnerecosystem.rest");
}
}
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.featuresToEnable(SerializationFeature.WRAP_ROOT_VALUE); // enables
// wrapping
// for
// root
// elements
builder.featuresToEnable(DeserializationFeature.UNWRAP_ROOT_VALUE);
return builder;
}
/*
* public RestTemplate restTemplate() { RestTemplate restTemplate = new
* RestTemplate(); restTemplate. return restTemplate; }
*/
}