如何将 2d json 数组映射到 pojo 类?

How can I map my 2d json array to a pojo classes?

我有一个 json 结构如下

{
"components":
{
"metadata":[
   [
     {"component":2},{"component":9}
   ],
   [
     {"component":10},{"component":15}
   ]
 ]
}
}

而我的 POJO class 是 ()

public class Components {

private List<Metadata> metadata;
// Getters and setters
}

public class Metadata{  

private List<String> component;
// Getters and setters

}

我在 ObjectMapper 中收到如下错误:

"Can not deserialize instance of com.sections.metadata.Metadata out of START_ARRAY token"

任何人都可以帮助我更正我的 POJO class 结构吗? 由于 json 是一个二维数组,我创建了两个数组列表, 一个在组件 class 中,另一个在元数据 class.

提前致谢!

{
"components":
{
  "metadata":[
    [
      {"component":2},{"component":9}
    ],
    [
      {"component":10},{"component":15}
    ]
  ]
}
}

以上JSON与您指定的对象结构不对应。

  • 组件中没有'metadata'的Array。注意周围没有'[]'。
  • 在元数据中,有一个对象数组(或简称数组),每个对象都有字符串列表,组件

这是您需要的:

public class ComponentsWrapper {

    private Components components;

    public Components getComponents() {
        return components;
    }

    public void setComponents(Components components) {
        this.components = components;
    }

    public static void main(String[] args) throws IOException, URISyntaxException {
        ObjectMapper objectMapper = new ObjectMapper();
        ComponentsWrapper components =
                objectMapper.readValue(<your JSON>),
                        ComponentsWrapper.class);


    }
}

class Components {

    private List<List<Component>> metadata;

    public List<List<Component>> getMetadata() {
        return metadata;
    }

    public void setMetadata(List<List<Component>> metadata) {
        this.metadata = metadata;
    }
}

class Component {

    private int component;

    public int getComponent() {
        return component;
    }

    public void setComponent(int component) {
        this.component = component;
    }
}