Java 动态构建 GeoJSON 完整实现指南
在 GIS 业务场景中,数据往往需要灵活扩展。比如从数据库查询出的基础属性之外,还需要根据计算结果动态添加字段(如距离、耗时等)再返回给前端地图展示。如果依赖纯 SQL 处理这些动态逻辑,不仅耦合度高,而且难以维护。
本文介绍一种基于 Java 的动态 JSON 构建方案,通过面向对象设计与设计模式,实现 GeoJSON 属性的灵活增删改查,无需修改原有数据结构即可适配多变的业务需求。
一、核心场景与痛点
1. 场景描述
假设我们有一个基础的 Feature 对象:
String originalJson = "{\"type\" : \"Feature\", \"geometry\" : {\"type\":\"Point\",\"coordinates\":[113.902426,22.729881]}, \"properties\" : {\"id\" : 1369981, \"location\" : \"光明区玉塘街道文明路 13 号\", \"durationHours\" : 2}}";
现在需要在运行时动态插入新的属性,甚至嵌套复杂的对象结构。传统的字符串拼接或简单的 Map 转换很难保证类型安全且易于维护。
2. 设计原则
采用面向对象思想,遵循以下原则:
- 单一职责:每个类只负责一种操作(如数组编辑、节点定位)。
- 开闭原则:新增功能通过扩展而非修改现有代码实现。
- 组合优于继承:利用内部类组合能力构建复杂结构。
二、核心架构实现
1. 外观入口:JsonPropertyManager
作为统一入口,隐藏 Jackson 的复杂性,提供静态工厂方法。
public class JsonPropertyManager {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
private JsonPropertyManager() {
throw new IllegalStateException("工具类,无需实例化");
}
public static JsonEditor createEditor(String jsonStr) throws JsonProcessingException {
return (jsonStr);
}
}


