杰森将JSON转换为JAVA

问题描述:

我试图解析从google自定义搜索中检索到的json数据。杰森将JSON转换为JAVA

这里是JSON例子:

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

这是POJO:

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

但我得到一个错误:

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

什么问题与我的POJO?

+2

可能是类项目是一个内部类...尝试使它成为公共类。 – Thihara 2013-04-11 05:46:01

使类结构像下面

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()); 
    } 
} 
+0

请参阅编辑代码示例 – Krushna 2013-04-11 06:36:23

+0

@JsonIgnoreProperties与他的特定问题无关。尽管谷歌自定义搜索中的json的确有其他字段,但他的问题是他的'item'类是不是静态的内部类。 – 2013-04-11 13:56:21

+0

是通过思考谷歌的结果,我给出了这个想法。 – Krushna 2013-04-11 14:10:02

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