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()); } }
相关推荐
这里进行介绍Gson解析复杂Json和简单Json的数据方式
1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...
通过Gson解析Json文件,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4246497.html
JSON、GSON解析json数据,详细介绍了json和gson的使用,解析复杂json数据
Android Studio下使用Google Gson解析Json数据示例
Gson解析JSON数据的入门级源码
使用gson解析json的一次测试使用
利用Google Gson实现JSON字符串和对象之间相互转换,内含源码和jar包
我的博客中的关于android中gson解析json数据例程,遇到不懂的可以来我的博客中交流。(๑•̀ㅂ•́)و✧
该源码是用Gson解析一个复杂的json,将json中的数据加载到listview中并且根据json中的url地址加载网络图片到listview中。
gson解析json 1gson-2.0.jar 2log4j-1.2.17.jar 3slf4j-api-1.7.10.jar 4slf4j-log4j12-1.7.10.jar
gson-2.3.1.jar json 转换工具
在Gson类库有一个Gson类,这个Gson类提供了两个方法:toJson() 和fromJson(),我们主要就是调用这两个方法来分别实现序列化Java对象为JSON字符串和反序列化JSON字符串成Java对象。 通过代码示例来对Gson类的常用方法...
包含以下java源文件: ...com.google.gson.JsonNull.class com.google.gson.JsonObject.class com.google.gson.JsonParseException.class com.google.gson.JsonParser.class com.google.gson.JsonPrimitive.class ...
Gson解析Json数据信息,生成Json格式的数据
我的博客中介绍的Gson解析JSON中动态未知key的例程源码,eclipse工程。
Eclipse下使用Google Gson解析Json数据示例,挺好用的,亲测
gson解析json(1.6),162K,gson主要用到的方法有两个,gson.toJson()是将对象,属性等转化成 json 串,gson.fromJson(,)是将json串转化成对象
Video对象变为json格式的字符串 json格式的字符串变为Video对象