json Jackson无法将VALUE_STRING标记外的java.util.ArrayList示例化[已关闭]

quhf5bfb  于 2023-10-21  发布在  Java
关注(0)|答案(2)|浏览(173)

已关闭此问题为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有关?任何帮助将不胜感激。

zf9nrax1

zf9nrax11#

索提里奥说得对
问题是webservice返回字符串而不是json。

irtuqstp

irtuqstp2#

返回一个字符串,而不是jsonString。

ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.readValue("returning",String.class);
// then,your operation...

相关问题