When using syntax like "response.itemResult.itemResultItems.salePrice" where "itemResultItems" produces a list, then you can get the "salePrice" property. It should produce a list. It should be synonymous with "response.itemResult.itemResultItems*.salePrice"
If you want just one sale price, then "response.itemResult.itemResultItems[0].salePrice" is the clear way to do it in my book. You could also replace "[0]" with ".first()" if you'd prefer. There is more on this in the language documentation: https://docs.groovy-lang.org/latest/html/documentation/#_syntax_enhancements_for_collections ________________________________ From: Jeemol K S via dev <dev@groovy.apache.org> Sent: Wednesday, May 14, 2025 4:55 AM To: dev@groovy.apache.org <dev@groovy.apache.org> Cc: Jeemol K S <jeemol....@oracle.com> Subject: [EXT] Clarification on Explicit Indexing Requirement in Groovy 3.x External Email: Use caution with links and attachments. Team, I am reaching out to seek clarification regarding a behavior change introduced in Groovy 3.x, particularly concerning the requirement for explicit indexing when accessing elements in arrays or lists, especially in scenarios involving maps. In Groovy 2.x, it was possible to reference elements directly without specifying the index, such as: response.itemResult.itemResultItems.salePrice However, in Groovy 3.x, the same reference now requires explicit indexing: response.itemResult.itemResultItems[0].salePrice Could you kindly provide insight into why this change was made? We understand that Groovy 3.x enforces stricter type checking and syntax rules (due to the introduction of the Parrot parser), which seems to have impacted how collections like arrays or lists are accessed. Was this change made to align Groovy’s behavior with Java semantics, or is there a deeper rationale behind this modification? Any official documentation I appreciate your time and look forward to your response. Thanks, Jeemol