已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我遇到了JSON字符串的问题。我想我什么都试过了,但我被卡住了。这是我目前为止的代码。梅芬:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.9.2</version>
</dependency>
实体:
@JsonIgnoreProperties(ignoreUnknown = true)
public class ImportTask {
@JsonProperty("ID")
private long id;
@JsonProperty("Name")
private String name;
@JsonProperty("Description")
private String description;
public ImportTask() {
}
// getters and setters
}
委托方:
List<ImportTask> importTaskList = new ArrayList<ImportTask>();
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
JacksonJaxbJsonProvider jacksonJaxbJsonProvider = new JacksonJaxbJsonProvider();
jacksonJaxbJsonProvider.setMapper(mapper);
Client client = ClientBuilder.newClient(new ClientConfig(jacksonJaxbJsonProvider));
Response response= client
.target("http://localhost:51873/api/getImportTaskList")
.request(MediaType.APPLICATION_JSON)
.get();
importTaskList = response.readEntity(new GenericType<List<ImportTask>>(){});
这是我从webservice中得到的JSON字符串:
"[{\"ID\":16,\"Name\":\"name\",\"Description\":\"description\"}]"
我得到这个错误
javax.ws.rs.ProcessingException: Error reading entity from input stream.
.......
错误类型:fasterxml.Jackson.databind.JsonMappingException:无法从VALUE_STRING标记中对java.util.ArrayList的示例进行初始化
错误是否与作为int而不是string传递的ID有关?任何帮助将不胜感激。
2条答案
按热度按时间zf9nrax11#
索提里奥说得对
问题是webservice返回字符串而不是json。
irtuqstp2#
返回一个字符串,而不是jsonString。