The solution: sections(id == sectionId)[0].fields(id == field-Id-One) The explanation: the filtering expression sections(id == sectionId) does not necessarily return ONE object, in fact it returns an array of objects, which contains only one element in this case. Using this one object in an array has the same effect in jasper then if it would be a single object. For example, the array could contain all objects/sections which do not have this id: sections(id != sectionId) If one tries to access the array with the "." operator, it will fail anyhow. So if you know that the array only contains that ONE object, you can get it directly with "array[0]"