嗨,我有一个mongoDB文档部分,其中包含如图所示的columns属性(第1格式)
"columns" : [
[
{
"itemId" : ObjectId("5b863b50083ae5eb1e678d75"),
"type" : "field"
}
],
[
{
"itemId" : ObjectId("5b8d4404af0963f54e262f46"),
"type" : "field"
}
],
[
],
[
]
]
which is of the type Array of Array of Objects
However at some places it is also stored in this format as well . (2nd format)
"columns" : [
{
"0" : {
"itemId" : "5b863b50083ae5eb1e678d75",
"type" : "field"
}
},
{
"0" : {
"itemId" : "5b8d4404af0963f54e262f46",
"type" : "field"
}
},
{
},
{
}
]
作为对象的对象数组
现在我有dao类someObject来存储最内层的对象
public class SomeObject{
private ObjectId itemId;
private String type;
public ObjectId getItemId() {
return itemId;
}
public void setItemId(ObjectId itemId) {
this.itemId = itemId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
这里是Dao类
public class Section{
private List<List<SomeObject>> columns;
public List<List<someObject>> getColumns() {
return columns;
}
public void setColumns(List<List<SomeObject>> columns) {
this.columns = columns;
}
}
对于第一种格式,部分类如何工作正常,因为我将类型作为List
但因为它有不同之处,因此打破了第二种格式
我也尝试过使用这个课程
Public class Section {
private List<Object> columns;
}
这个mapps第二种格式,但打破第一种格式我得到以下错误
"exceptionDetails": "Cannot convert [Document{{itemId=5877f2345449aef957e1d8ec, type=field}}] of type class java.util.ArrayList into an instance of class java.lang.Object! Implement a custom Converter<class java.util.ArrayList, class java.lang.Object> and register it with the CustomConversions.
请任何人可以建议我如何创建dao类,以便它可以映射两种格式?我需要实现自定义映射器吗?如果是的话怎么样?
在我看来你有点不明白什么是DAO类。你有什么是JavaBeans。
关于你的问题,正如你注意到并且在例外情况中报告你的文件是ArrayList
,为什么不把它读作ArrayList
然后将其设置为Section
字段?但如果此选项不适合您,您可以实现Custom Converter,这也会在异常详细信息中向您报告。