我正在对杰克逊做一个非常简单的测试。我有一个类,并将其对象用作Jersey方法的参数和返回值。
该类是:

import java.util.List;

public class TestJsonArray {

    private List<String> testString;

    public List<String> getTestString() {
        return testString;
    }

    public void setTestString(List<String> testString) {
        this.testString = testString;
    }
}


我有一个Jersey方法尝试将一个字符串添加到列表测试字符串

@Path("/arrayObj")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Object createObjectArray(@QueryParam("param") String object) throws JsonGenerationException, JsonMappingException, IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        TestJsonArray convertValue = objectMapper.convertValue(object, TestJsonArray.class);
        convertValue.getTestString().add("hello");
        return objectMapper.writeValueAsString(convertValue);
    }


当我使用参数调用此方法时


  {“ testString”:[“嗨”]}


我有一个例外:

java.lang.IllegalArgumentException: Can not construct instance of test.rest.TestJsonArray, problem: no suitable creator method found to deserialize from JSON String
 at [Source: N/A; line: -1, column: -1]


反序列化过程中引发了异常:


  TestJsonArray convertValue = objectMapper.convertValue(object,
  TestJsonArray.class);


我想知道为什么抛出此异常。我究竟做错了什么?

最佳答案

尝试使用readValueObjectMapper方法而不是convertValue

objectMapper.readValue(json, TestJsonArray.class);


这应该工作。

10-06 04:51