如何使用Java访问Apache Camel的$ {body}中嵌套的地图列表

时间:2019-01-11 02:41:12

标签: java json apache dictionary apache-camel

我正在尝试访问传入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个partnerName,partnerLocation映射。

现在我必须使用

将此数据插入到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']}`

或其他一些东西,以便我获得该价值。

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

1 个答案:

答案 0 :(得分:0)

最终对我有用的是:

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

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