【问题标题】:How can I map my 2d json array to a pojo classes?如何将我的 2d json 数组映射到 pojo 类?
【发布时间】:2015-05-12 21:07:56
【问题描述】:

我有一个如下的 json 结构

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

而我的 POJO 类是 ()

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 类结构? 由于json是一个二维数组,所以我创建了两个arrayLists, 一个在组件类中,另一个在元数据类中。

提前致谢!

【问题讨论】:

  • 使用 Jackson json 库。

标签: java json jackson


【解决方案1】:

这是你需要的:

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;
    }
}

【讨论】:

  • 私有列表> 元数据;这就是我所缺少的,它解决了我的问题。
【解决方案2】:
{
"components":
{
  "metadata":[
    [
      {"component":2},{"component":9}
    ],
    [
      {"component":10},{"component":15}
    ]
  ]
}
}

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

  • 在组件中,没有“元数据”数组。请注意,它周围没有“[]”。
  • 在元数据内部,有一个对象数组(或简称为数组),每个对象都有字符串列表、组件

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2017-11-10
    • 1970-01-01
    • 2019-08-10
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多