Jackson中嵌套属性添加及GeoJSON结构修改技术问询
在Jackson ObjectNode的properties中添加新属性
嘿,这个需求其实很好实现,用Jackson的API几步就能搞定,我给你拆解一下具体步骤:
1. 先拿到properties子节点
首先你得从bufferFeature这个根节点里取出properties对应的子节点。如果确定properties肯定存在(就像你示例里的GeoJSON结构那样),直接用get()转成ObjectNode就行:
ObjectNode propertiesNode = (ObjectNode) bufferFeature.get("properties");
要是怕万一properties不存在(比如某些不规范的GeoJSON),可以用with()方法——它会自动帮你创建一个空的properties节点,避免空指针:
ObjectNode propertiesNode = bufferFeature.with("properties");
2. 给properties加新属性
拿到propertiesNode之后,就可以用put()系列方法添加不同类型的属性了,比如:
- 加字符串类型的属性:
propertiesNode.put("region_nickname", "North Star State");
- 加数字类型的属性:
propertiesNode.put("land_area_sq_mi", 79627);
- 加布尔类型的属性:
propertiesNode.put("has_lakes", true);
完整示例代码
把这些步骤串起来,代码大概是这样:
// 假设你已经通过mapper.valueToTree得到了bufferFeature ObjectNode propertiesNode = bufferFeature.with("properties"); // 添加新属性 propertiesNode.put("region_nickname", "North Star State"); propertiesNode.put("land_area_sq_mi", 79627); propertiesNode.put("has_lakes", true); // 要是想修改已有属性,直接用put覆盖就行 propertiesNode.put("scalerank", 3);
这样操作完,你的GeoJSON的properties里就会多出这些新属性啦,修改已有属性的逻辑也一样,用put()覆盖原有值就OK。
内容的提问来源于stack exchange,提问作者Allain
相关产品推荐
相关产品推荐

