首页 > 解决方案 > 如何访问嵌套在 Java 中 Apache Camel 的 ${body} 中的地图列表

问题描述

我正在尝试访问传入 Json 的传入 {body} 中的数据我已经与 Jackson 进行了解组并将其映射到 Java Map

  `.unmarshal().json(JsonLibrary.Jackson, java.util.Map.class)
`

在上面的解组步骤之后,我的 Json 数据是这样的

`{ "projectId" : 12345,
"title" : “12345 - Plant 1 Processing",
"partners": [{"partnerName": "partnerJV1", "partnerLocation": "JA"},
{"partnerName": "partnerJV2", "partnerLocation": "FL"},
{"partnerName": "partnerJV3", "partnerLocation": "OH"}
]`

最后一部分在合作伙伴列表中可以有 0-N 个合作伙伴名称、合作伙伴位置映射。

现在我必须将这些数据插入到 SQL 表中

            .to("sql:classpath:sql/sql_queries.sql")

我的 sql_queries.sql 中包含以下查询,用于将数据字段插入表中:

`INSERT INTO MY_TABLE(PID, TITLE, PartnerName1, PartnerLocation1, PartnerName2, PartnerLocation2, PartnerName3, PartnerLocation3) VALUES(:#${body['projectId']}, :#${body['title']}, :#${body['partners[0]']['partnerName']}, :#${body['partners[0]']['partnerLocation']} )'

我无法弄清楚最后一部分是地图列表的语法。如果应该是

`:#${body['partners[0]']['partnerName']}`

或其他东西,以使我获得该价值。

任何提示都会有所帮助,谢谢!

标签: javajsonapachedictionaryapache-camel

解决方案


最后对我有用的是:

:#${body['partners'][0]['partnerName']}

但是如果我一开始不知道它的大小,我很想找到一种方法来迭代 Java 中的列表之类的值。


推荐阅读