我是杰克逊的新手,我有一个Web服务,希望通过HTTP POST请求传递JSON对象。 JSON对象将映射到Java类以进行进一步处理。
所以我有这个:
@Path("/")
public class RestService {
@POST
@Consumes("application/json")
public String postAction(MyClass json) {
// ...
}
}
MyClass看起来像这样:
public class MyClass {
protected String var1;
protected JSONArray var2;
}
点是,var2是一个数组,持有JSONObjects(或为空)。这些JSON对象应该映射到另一个类MySubClass,比如说
public class MySubClass {
protected String subvar1;
}
所以我们有一个匹配的字符串来自POST,类似于一个有效的JSON对象:
{"var1": "x", "var2": [{"subvar1": "1"},{"subvar1": "2"}]}
问题是,每次都会崩溃,并出现如下错误消息:
string(419)“HTTP / 1.1 400 Bad Request Date:Mon,26 Oct 2015 15:53:26 GMT内容类型:text / html连接:关闭服务器: Jetty(9.2.2.v20140723)org.codehaus.jackson.map.JsonMappingException: 无法从START_ARRAY反序列化org.json.JSONArray的实例 令牌在[来源:HttpInputOverHTTP @ 2d6e16c7; line:1,专栏:1545] (通过参考链:x.y.z.MyClass [“var2”])“
也许我现在太累了发现错误......
答案 0 :(得分:1)
我认为您需要一个MySubClass或JsonArray列表。 因为在字符串中你有:
"var2": [{"subvar1": "1"},{"subvar1": "2"}]}
这是一个集合。 所以在你的MyClass中你应该有:
public class MyClass {
protected String var1;
protected List<.....> var2;
}
我希望这会有所帮助!!