使用框架的东西

https://github.com/mikolajmitura/java-properties-to-json

自己写的递归处理

/**
 * a.b.c=8789
 * a.b.e=8789
 * <p>
 * a:{b:{c:8789,e:8789}}
 *
 * @param obj 最后生产出来的对象
 * @param arr   a.b.c 进行split后的处理
 * @param i  起始开始值 
 * @param p   对应叶子节点的值
 */
void dealKey(Map obj, String[] arr, int i, ParamNode p) {
    //如果是最后一项直接返回
    if (i == arr.length)
        return;
    //如果map中的字段不为空
    if (null != obj.get(arr[i])) {
        if (i == arr.length - 1) {
            obj.put(arr[i], p.getTagDescription("@sample"));
            ++i;
            dealKey((Map) obj.get(arr[i - 1]), arr, i, p);
        } else {
            ++i;
            dealKey((Map) obj.get(arr[i - 1]), arr, i, p);
        }
    } else {
        //判断是叶子节点,将值放入map中,
        if (i == arr.length - 1) {
            obj.put(arr[i], p.getTagDescription("@sample"));
            ++i;
            return;
        } else {
            //如果不是叶子节点创建一个map
            obj.put(arr[i], new LinkedHashMap<>());
            ++i;
        }
        dealKey((Map) obj.get(arr[i - 1]), arr, i, p);
    }
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐