如何使用 jackson JsonParser 从 JsonToken.START_OBJECT 到 JsonToken.END_OBJECT 读取 JSON 对象

问题描述

我正在使用 Jackson JsonParser 来一一解析 json 标记。这个想法是创建一个参数列表,这些参数作为 JSON Post Body 传递给 HTTPServletRequest 对象。除了简单和对象值的数组以及对象本身之外,主体还可以包含简单类型,如整数、双精度、真、假值。创建参数列表的目的是我在 URL 本身中传递方法名称和类名称,因此我知道要调用哪个方法。请求正文中的参数序列与该方法的预期参数完全匹配。 为此,我可以在参数列表中添加简单对象和简单类型。但是,参数也可能包含一组远程对象。

在这种情况下,它看起来像这样:

{
    "remoteClass": "com.example.Component","child": [
        {
            "remoteClass": "com.example.Component","field": "ID","fieldType": null,"operator": "=","value": 1710
        },{
            "remoteClass": "com.example.Component","value": 1711
        },"field": "Time","operator": ">=","value": "2013-04-04T18:30:00.000Z"
        },"operator": "<=","value": "2013-04-25T18:29:59.999Z"
        }
    ]
}

我的组件类表示如下:

public class Component implements Serializable
{
private static final long serialVersionUID = 1L;

public Component[] child;

// Field name
public String field;

// Field type
public String fieldType;

// Operator
public String operator;

// Value
public Object value;

}

因为,我正在使用 JsonParser 并一一解析令牌。每当我收到以 JsonToken.START_OBJECT 开头的任何令牌时,我想直接将对象转换为 remoteClass 字段指定的类,而不是进一步解析每个令牌并手动创建映射或 json。因为这个类是事先知道的,所以我可以使用 jackson 自动给我这个对象。但是,我想知道一旦 JsonParser 给了我 JsonToken.START_OBJECT 令牌,我如何才能读取整个 JSON 直到 JsonToken.END_OBJECT 并将其转换为指定的相关类型,以便当 Jsonparser 获取一个令牌时,它会在遇到的对象已经完成转换并添加到我的参数列表中。

非常感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)