我有一个List<String>
,其中每个元素代表一个节点,而a String
是与该列表的最后一个节点相对应的值。该列表表示该值的路径。因此,列表中的每个元素基本上都是前一个元素的值。我想使用Jackson从它创建一个JSON对象。但是,这需要动态完成,而不是显式设置JSON对象的节点,因为列表并不总是相同的。
因此,我想知道是否存在一种方法来转换或迭代列表并创建JSON对象。因此,如果我的列表如下所示:
["user", "car", "brand"]
并且值为“ BMW”,JSON对象应如下所示:
{
"user":
{
"car":
{
"brand": "BMW"
}
}
}
反向迭代列表,并在每次迭代时为list元素创建一个新的JsonNode,将先前的JsonNode作为子级添加到新的JsonNode中,并使用新的JsonNode覆盖原始引用。冲洗并重复。
就像是...
final String value = "BMW"; // whatever the final "value" is.
final ObjectMapper objectMapper = new ObjectMapper();
ObjectNode json = null;
for (int i = list.size() - 1; i >= 0; i--) {
final String prop = list.get(i);
final ObjectNode objectNode = objectMapper.createObjectNode();
if (json == null) {
objectNode.put(prop, value);
} else {
objectNode.put(prop, json);
}
json = objectNode;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句