我有这个json:{"backwards":false,"idFrom":-1}
一种方法:
private Object[] instantiateFromRequest(Class[] paramTypes) throws IOException {
Object[] params = new Object[paramTypes.length];
if (paramTypes.length == 0) {
return params;
}
HttpServletRequest req = RequestSupplier.request();
InputStream is = req.getInputStream();
ObjectMapper m = new ObjectMapper();
if (paramTypes.length == 1) {
params[0] = m.readValue(is, paramTypes[0]);
} else {
String[] vals = m.readValue(is, String[].class);//trouble here
for (int i = 0; i < paramTypes.length; i++) {
if (paramTypes[i] == String.class) {
params[i] = vals[i];
} else {
params[i] = m.readValue(vals[i], paramTypes[i]);
}
}
}
return params;
}
(params[0]
为long
,参数params[1]
为boolean
)
哪个应该返回json中的对象。麻烦来自标记线。我得到一个例外:
Can not deserialize instance of java.lang.String[] out of START_OBJECT token
我不知道为什么会这样。有人能帮助我吗?
[-1, false]
解决了我的问题
答案 0 :(得分:1)
问题是您正在尝试序列化字符串数组,其中您在 json
中有另一个通用类型对象。
请尝试以下操作:
String val = m.readValue(is, String.class);
<强> OR: 强>
ContentBean myContentBean = m.readValue(is, ContentBean.class);
ContentBean
有两个属性:
backwards
强> idFrom
强> 与他们的吸气剂和制定者。
它应该完美无缺。
修改强>
你确定:
<强> params[1] is long and params params[0] is boolean
强>
因为它似乎与我相反。 。 。