Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;“没有合适的建造商”;反序列化JSON子级时出错_Java_Json_Jackson_Deserialization_Fasterxml - Fatal编程技术网

Java &引用;“没有合适的建造商”;反序列化JSON子级时出错

Java &引用;“没有合适的建造商”;反序列化JSON子级时出错,java,json,jackson,deserialization,fasterxml,Java,Json,Jackson,Deserialization,Fasterxml,我正在尝试使用fasterxml/jackson将json结构映射到pojo 我的json来自一个文件,如下所示: { "groups": [ { "name": "Group1", "icon": "group1.png", "banner": "banner.png" }, { "name": "Group2", "icon": "group2.png",

我正在尝试使用fasterxml/jackson将json结构映射到pojo

我的json来自一个文件,如下所示:

{
   "groups": [
      {
         "name": "Group1",
         "icon": "group1.png",
         "banner": "banner.png"
      },
      {
         "name": "Group2",
         "icon": "group2.png",
         "banner": "banner.png"
      }
   ],
   "ticker": [
      {
         "title": "ticker1",
         "description": "description",
         "url": "bla",
         "icon": "icon.png",
         "banner": "banner.png",
         "group": "Group1",
         "enabled": "true",
         "startTime": "00:00",
         "startDate": "15.10.2013"
      }
   ]
}
我对小组感兴趣。因此,我创建了一个类组:

public class Groups implements Serializable {
  private final static long serialVersionUID = 42L;

  private List<Group> groups;

  public Groups() {}

  public Groups ( List<Group> groups ) {
    this.groups = groups;
  }

  public List<Group> getGroups() {
    if (groups == null) {
        groups = new ArrayList<Group>();
    }
    return groups;
  }

  public void add(Group group) {
    getGroups().add(group);
  }
}
公共类组实现可序列化{
私有最终静态长serialVersionUID=42L;
私人名单组;
公共组(){}
公共组(列表组){
这个组=组;
}
公共列表getGroups(){
如果(组==null){
groups=newarraylist();
}
返回组;
}
公共无效添加(组){
getGroups().add(组);
}
}
通常我使用以下代码将json映射到pojo:

public static <T> T readJsonFile(File file, Class<T> valueType) throws IOException {
    String json = readJsonFile(file.getAbsolutePath());
    if( StringUtils.isEmpty(json) ) {
        return null;
    }
    return createObjectMapper().readValue(json, valueType);
}
publicstatict readJsonFile(文件文件,类valueType)抛出IOException{
字符串json=readJsonFile(file.getAbsolutePath());
if(StringUtils.isEmpty(json)){
返回null;
}
返回createObjectMapper().readValue(json,valueType);
}
如果pojo是外部json对象,那么这种方法可以很好地工作。 但是,如果我试图提取组,它会失败:
“没有合适的构造函数”

如何提取嵌套在json结构中的pojo?

public Groups(){
public Groups() {
    groups = new ArrayList<>();
}
groups=newarraylist(); }
默认构造函数用于序列化,而
仅定义为接口


我甚至会更改all,并将字段初始化为非空值。

要么手工提取它,然后将其交给解析器,要么创建整个JSON结构的Java表示,然后访问“组”我已经尝试过你的方法,但仍然得到相同的错误。然后它只能是
private List groups=new ArrayList()你的第一个答案毕竟是对的。在我的组类中有一个隐藏的异常。谢谢。