Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 在Jaspersoft中使用复杂类型(列表和对象)的正确方法是什么? 请考虑一个MunGDB集合,其内容如下: "_id": "clientsInfo" "data": { "clientsList" : [ { "name" : "Mike", "country" : "USA" }, ... ] }_Java_Jasper Reports_Mongodb Query_Jaspersoft Studio - Fatal编程技术网

Java 在Jaspersoft中使用复杂类型(列表和对象)的正确方法是什么? 请考虑一个MunGDB集合,其内容如下: "_id": "clientsInfo" "data": { "clientsList" : [ { "name" : "Mike", "country" : "USA" }, ... ] }

Java 在Jaspersoft中使用复杂类型(列表和对象)的正确方法是什么? 请考虑一个MunGDB集合,其内容如下: "_id": "clientsInfo" "data": { "clientsList" : [ { "name" : "Mike", "country" : "USA" }, ... ] },java,jasper-reports,mongodb-query,jaspersoft-studio,Java,Jasper Reports,Mongodb Query,Jaspersoft Studio,在设置数据集并像这样定义查询之后 { collectionName:'projectA', findQuery: { '_id':'clientsInfo', }, findFields: { '_id':0, 'data.clientsList':1 }, } …我能够使用以下表达式在JasperSoft Studio的文本字段中显示获取的数组(java.util.Listtype)的第一项: $F{da

在设置数据集并像这样定义查询之后

{
    collectionName:'projectA',
    findQuery: {
        '_id':'clientsInfo',
    },
    findFields: {
        '_id':0,
        'data.clientsList':1
    },
}
…我能够使用以下表达式在JasperSoft Studio的文本字段中显示获取的数组(
java.util.List
type)的第一项:

$F{data.clientsList}.get(0)
但是,考虑到我想在名称/国家表中展示整个数据

问题1:我如何访问任何字典字段?正在尝试获取类型对象的方法get(String)未定义。错误。但是,如果知道对象是
com.mongodb.BasicDBObject
的实例,则应该继承该方法(请参阅)

我还尝试将对象强制转换为
org.json.JSONObject
,但随后得到
net.sf.jasperreports.engine.fill.jrepressionevalexception:Error评估源文本的表达式:(JSONObject)$F{data.clientsList}.get(0)
Error

问题2:假设我们已经解决了第一个问题。。。如何迭代列表以根据数组长度不仅访问第一项,而且访问所有项?是否可以在JasperSoft表达式编辑器中使用for循环语句?()


提前谢谢,任何能给我指明正确方向的线索都将不胜感激。

如果有人和我处于同样的情况,我必须说整个方法都是错误的

它不是简单的查询,返回一大块复杂数据,格式化为对象或对象列表,然后使用JasperSoft Studio对其进行操作。相反,我要做的是设计一个更复杂的查询,它返回我想直接使用的简单字段。如何做到这一点?通过使用聚合框架

所以,通过改变这个

{
    collectionName:'projectA',
    findQuery: {
        '_id':'clientsInfo',
    },
    findFields: {
        '_id':0,
        'data.clientsList':1
    },
}
…为了这个

{
    runCommand: {
    aggregate : 'projectA',
    pipeline : [
        {'$match': {'_id':'clientsInfo'}},
        {'$project': {'data.clientsList': 1}},
        {'$unwind': '$data'},
        {'$unwind': '$data.clientsList'}
        ]
    }
}

…这就是我如何获得
名称
国家
字段,以便在文本字段、表格等中使用它们。

如果有人与我处于相同的情况,我必须说整个方法是错误的

它不是简单的查询,返回一大块复杂数据,格式化为对象或对象列表,然后使用JasperSoft Studio对其进行操作。相反,我要做的是设计一个更复杂的查询,它返回我想直接使用的简单字段。如何做到这一点?通过使用聚合框架

所以,通过改变这个

{
    collectionName:'projectA',
    findQuery: {
        '_id':'clientsInfo',
    },
    findFields: {
        '_id':0,
        'data.clientsList':1
    },
}
…为了这个

{
    runCommand: {
    aggregate : 'projectA',
    pipeline : [
        {'$match': {'_id':'clientsInfo'}},
        {'$project': {'data.clientsList': 1}},
        {'$unwind': '$data'},
        {'$unwind': '$data.clientsList'}
        ]
    }
}

…是我获取
name
country
字段的方式,以便在文本字段、表格中使用它们,…等等。

是否可以使用for循环语句
-JasperReports中的for循环语句是什么?一些表达式,允许我定义一个自增量变量,以从头到尾访问数组项,如
get(i)
是否可以使用for循环语句
-JasperReports中的for循环语句是什么?一些表达式允许我定义一个自增量变量来从头到尾访问数组项,如
get(i)