Java Jackson JsonParser获取数组令牌

Java Jackson JsonParser获取数组令牌,java,json,parsing,jackson,fasterxml,Java,Json,Parsing,Jackson,Fasterxml,我使用Jackson Json解析器从Json字符串中获取值,然后将它们插入Java对象。下面是我正在处理的JSON类型的一部分: { "address":"aURL", "links":[ "aURL", "aURL", "aURL" ] } 下面是我在Java代码中的内容。net是一个全局数组列表,页面对象有一个字符串地址字段和一个字符串[]链接字段。我想从JSON中获取链接的字符串数组,并将它们插入到页面对象中。虽然

我使用Jackson Json解析器从Json字符串中获取值,然后将它们插入Java对象。下面是我正在处理的JSON类型的一部分:

{
    "address":"aURL",
    "links":[
        "aURL",
        "aURL",
        "aURL"
    ]
}
下面是我在Java代码中的内容。net是一个全局数组列表,页面对象有一个字符串地址字段和一个字符串[]链接字段。我想从JSON中获取链接的字符串数组,并将它们插入到页面对象中。虽然我可以使用getText()方法轻松提取地址字符串,但我无法找到一种方便的方法来获取字符串数组。这是我现在的代码:

private static void parse(String json) throws IOException {
    JsonParser parser = new JsonFactory().createJsonParser(json);
    while (parser.nextToken() != JsonToken.END_OBJECT) {
        String tok = parser.getCurrentName();
        Page p = new Page();
        if ("address".equals(tok)) {
            parser.nextToken();
            p.setAddress(parser.getText());
        }
        if ("links".equals(tok)) {
            parser.nextToken();
            //p.setLinks(HOW TO GET STRING ARRAY)
        }
        net.add(p);
    }
}

我更愿意坚持使用我正在使用的JsonParser-nexting方法,除非它太笨拙了

你可以试试这样的东西

private static void parse(String json) throws IOException {
    ObjectMapper objectMapper = new ObjectMapper();
    JsonParser parser = new JsonFactory().createJsonParser(json);
    while (parser.nextToken() != JsonToken.END_OBJECT) {
        String tok = parser.getCurrentName();
        Page p = new Page();
        if ("address".equals(tok)) {
            parser.nextToken();
            p.setAddress(parser.getText());
        }
        if ("links".equals(tok)) {
            parser.nextToken();
            ArrayNode node = objectMapper.readTree(parser);
            Iterator<JsonNode> iterator = node.elements();
            String[] array = new String[node.size()];
            for (int i = 0; i < node.size(); i++) {
                if (iterator.hasNext()) {
                    array[i] = iterator.next().asText();
                }
            }
            p.setLinks(array);
        }
        net.add(p);
    }
}
private static void parse(字符串json)抛出IOException{
ObjectMapper ObjectMapper=新的ObjectMapper();
JsonParser parser=新的JsonFactory().createJsonParser(json);
while(parser.nextToken()!=JsonToken.END\u对象){
字符串tok=parser.getCurrentName();
第p页=新页();
如果(“地址”。等于(tok)){
parser.nextToken();
p、 setAddress(parser.getText());
}
如果(“链接”。等于(tok)){
parser.nextToken();
ArrayNode节点=objectMapper.readTree(解析器);
迭代器迭代器=node.elements();
String[]数组=新字符串[node.size()];
对于(int i=0;i
不使用像Gson这样简单的东西有什么特别的原因吗?字符串[]links仍然是空的,我只是再次检查了一下。这对我来说很好。请再次验证。我在我的程序的其他地方切换了一些东西,这确实为我解决了问题。