尝试反序列化对象时出错

时间:2014-07-14 14:13:24

标签: java jackson

我有这个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 我不知道为什么会这样。有人能帮助我吗?

编辑:实际上,我试图获得一个数组,而不是一个对象。将JSON转换为:[-1, false]解决了我的问题

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试序列化字符串数组,其中您在 json 中有另一个通用类型对象。

请尝试以下操作:

String val = m.readValue(is, String.class);

<强> OR:

ContentBean myContentBean = m.readValue(is, ContentBean.class);

ContentBean有两个属性:

  1. backwards
  2. idFrom
  3. 与他们的吸气剂和制定者。

    它应该完美无缺。

    修改

    你确定:

    <强> params[1] is long and params params[0] is boolean

    因为它似乎与我相反。 。 。