Gson替换json中name的值
程序员文章站
2022-05-28 16:52:35
...
package com.vip.gsontest.tools; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** * 日常中经常需要把json转成对象或者把对象转成json,但对应属性名与原来json的key不一致的情况,经常发生,通过该工具,可以进行转换 * * @author laien.liang * */ public class GsonUtil { public static JsonElement replaceKey(JsonElement source,Map<String, String> rep) { if (source == null || source.isJsonNull()) { return JsonNull.INSTANCE; } if (source.isJsonPrimitive()) { return source; } if (source.isJsonArray()) { JsonArray jsonArr = source.getAsJsonArray(); JsonArray jsonArray = new JsonArray(); jsonArr.forEach(item -> { jsonArray.add(replaceKey(item, rep)); }); return jsonArray; } if (source.isJsonObject()) { JsonObject jsonObj = source.getAsJsonObject(); Iterator<Entry<String, JsonElement>> iterator = jsonObj.entrySet().iterator(); JsonObject newJsonObj = new JsonObject(); iterator.forEachRemaining(item -> { String key = item.getKey(); JsonElement value = item.getValue(); if (rep.containsKey(key)) { String newKey = rep.get(key); key = newKey; } newJsonObj.add(key, replaceKey(value, rep)); }); return newJsonObj; } return JsonNull.INSTANCE; } public static void main(String[] args) { String json = "{\"order_sn\":\"14031000273822\",\"carriers_code\":1100000357,\"carrier\":\"浙*尔快递\",\"package_type\":2,\"packages\":[{\"0\":{\"good_sn\":\"ALM2236W36\",\"amount\":\"2\"},\"1\":{\"good_sn\":\"ALM2236W37\",\"amount\":\"2\"},\"transport_no\":\"test5715A\"},{\"0\":{\"good_sn\":\"ALM2236W35\",\"amount\":\"2\"},\"transport_no\":\"test5715B\"}]}"; JsonElement jsonEle = new JsonParser().parse(json); HashMap<String, String> rep = new HashMap<String, String>(); rep.put("order_sn", "order_id"); rep.put("carriers_code", "carrier_code"); rep.put("good_sn", "barcode"); JsonElement replaceKey = replaceKey(jsonEle, rep); System.out.println(replaceKey.toString()); } }
上一篇: io之DataStream
推荐阅读
-
js获取form表单中name属性的值
-
SQL SERVER使用REPLACE将某一列字段中的某个值替换为其他的值
-
dataframe 按条件替换某一列中的值方法
-
获取window.location.href中传的值,并且转换成json数据使用
-
如何利用JAVA正则表达式轻松替换JSON中的大字段
-
java提取json中某个数组的所有值方法
-
在php中取得image按钮传递的name值
-
c# json转换成dynamic对象,然后在dynamic对象中动态获取指定字符串列表中的值
-
python 提取tuple类型值中json格式的key值方法
-
Google Gson - 将给定的Json转换为Map中嵌套Map的数据结构