本文主要是介绍解析多层嵌套json模板的JsonUtil类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
公司让开发一个解析现有模板的的json类。
json模板是这样样子的多层嵌套json对象,本来要解决jsonObect和jsonArray两种类型的对象,但是仔细核对过后发现,在业务中并没有使用到jsonArray这种类型的对象。所以我先做了解析多层嵌套JsonObject的JsonObject对象。
先开看一下我们要使用到的Json模版
{"一班":{"座位2":{"studentAge":13,"studentName":"李四"},"座位1":{"studentAge":12,"studentName":"张三"}},"二班":{"座位3":{"studentAge":14,"studentName":"王五"},"座位4":{"studentAge":15,"studentName":"赵六"}}
}
那么这里我使用的嵌套是两层嵌套 第一级是班,第二级是座位但是在实际生产过程中,并不知道有多少级Json嵌套。那么就需要自动的来确定Json嵌套的层数。先来看我的Util类吧。
package com.kx.www;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import com.alibaba.fastjson.JSONObject;public class JsonUtils {private String jsonMode="";/*** 单个key 修改 json模版 * @param jsonMode* jsonString模板* @param key* 传入XX.XX.XX.AA(标识要修改那个字段)* @param value* json模版 String 字符串* @return* json模版 String 字符串 如果key值在模版中有那么返回修改后的模版,如果key在模版中没有那么返回传入的模版*/public String PutNewValue(String jsonMode, String key, String value) {JSONObject jsonObject = JSONObject.parseObject(jsonMode);// 把接收到的json格式的字符串模板转换为json对象// 切分 遍历key 拿出前面节点 和最后一个key值String[] keys = key.split("\\.");List<JSONObject> list = new ArrayList<JSONObject>();list.add(jsonObject);for (int i = 0; i < keys.length - 1; i++) {try {jsonObject = jsonObject.getJSONObject(keys[i]);} catch (Exception e) {return jsonMode;}list.add(jsonObject);}jsonObject.put(keys[keys.length - 1], value);for (int i = keys.length - 2; i >= 0; i--) {list
这篇关于解析多层嵌套json模板的JsonUtil类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!