0

我正在尝试解析从谷歌自定义搜索中检索到的 json 数据。

这是json示例:

{
 "items": [
  {
   "link": "address1"
  },
  {
   "link": "address2"
  }
 ]
}

这是 POJO:

public class Result 
{
    item[] items;
    class item
    {
        String link;
    }
}

但我收到一个错误:

无法识别的字段“项目”(类结果),未标记为可忽略

我的 POJO 有什么问题?

4

2 回答 2

3

使类结构如下所示

class item {
    String link;
}
@JsonIgnoreProperties(ignoreUnknown=true)
class Result {
    item[] items;
}

@JsonIgnoreProperties(ignoreUnknown=true) 如果 JSON 字符串中有任何属性但不在你的类中,那么解析器将不会通过任何异常,它只会忽略它。

编辑:带有示例的完整代码

class Item {
    String link;

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }
}

@JsonIgnoreProperties(ignoreUnknown = true)
class Result {
    List<Item> items;

    public List<Item> getItems() {
        return items;
    }

    public void setItems(List<Item> items) {
        this.items = items;
    }

}

public class JsonCommonTest {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        String data = "{\"items\": [{\"link\": \"address1\"},{\"link\": \"address2 \"}]}";
        Result result = mapper.readValue(data, Result.class);
        System.out.println(result.items.size());
    }
}
于 2013-04-11T05:59:45.903 回答
0

如果您在杰克逊中使用内部类,则内部类必须是静态的或不使用内部类。

于 2013-04-11T06:14:51.420 回答