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()); } }
相关推荐
例如,你有一个User类,包含name和age属性,你可以创建一个User对象,然后使用Gson库的`toJson()`方法将其转换为JSON字符串: ```java public class User { private String name; private int age; // getters ...
在Java开发中,Gson库被广泛用于数据序列化和反序列化,特别是在网络通信、存储或展示JSON数据时。在本篇文章中,我们将深入探讨Gson库的基本用法、核心概念以及如何在项目中引入Gson库所需的jar文件。 首先,我们...
`decodeUnicode`函数通过正则表达式匹配并替换JSON字符串中的Unicode转义序列,将其转化为对应的UTF-8字符。 总结来说,解决JSON中文乱码问题的关键在于确保JSON数据从生成到传输再到解析的整个过程中,始终使用UTF...
只需要将`String[].class`替换为`List<String>.class`,Gson会自动处理JSON数组到List的转换。 再者,JSON与Map的转换。Map在Java中用于存储键值对,Gson同样支持这种转换: ```java Map, String> map = new ...
- 搜索和替换:在大型JSON文件中查找特定内容并进行替换。 - 编辑:允许用户直接编辑JSON数据,快速调整数据结构。 5. 使用注意事项: - 软件仅用于学习,不可用于商业用途,以遵守版权和许可协议。 - 使用时...
请替换“最新版本号”为实际的库版本号,可以在Maven中央仓库或Gradle仓库中查找。 通过以上介绍,你可以了解到在Java中处理JSON数据时的一些常见库和基本操作。无论是进行网络请求的响应解析,还是存储和传输数据...
在Java中,处理JSON的库有很多,如Gson、Jackson、org.json、Fastjson等。这些库提供了方便的API来实现JSON的生成和解析。 1. Gson库:由Google开发,可以直接将Java对象转换为JSON字符串,反之亦然。例如: ```...
UserInfo userInfo = gson.fromJson(responseJson, UserInfo.class); // 使用解析出的userInfo对象 } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable ...
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和编写数据。JSON是独立于语言的,但与JavaScript语法非常相似,这使得它成为Android应用程序中理想...
`org.json` Jar包是Java开发中常用的JSON处理库,由`org.json`组织提供,主要用于解析、生成和操作JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的...
在Java中,处理JSON主要有两个流行的库:Jackson和Gson。 标题和描述提及的是将JSON字符串转换为Java对象,特别是涉及多层嵌套和List集合的情况。这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含...
在Java中,处理JSON通常需要用到特定的库,如Jackson、Gson、org.json等。 本主题将探讨如何在Java中使用jar包进行JSON解析。首先,我们需要引入相应的jar包。例如,如果你选择使用Jackson库,你需要下载`jackson-...
上述代码中,使用了Gson类的toJson()方法,将Java对象People转换为JSON格式的字符串,并打印到控制台。转换的结果为:`{"name":"People","age":20,"setName":true}`。 如果需要定制GSON的行为,比如排除某些字段不...
在Java编程中,处理JSON数据是一项常见的任务,而`JsonObject`和`JsonArray`是Gson库中的两个核心类,用于解析和构建JSON对象和数组。Gson是Google提供的一个开源库,它允许我们将Java对象转换为JSON字符串,反之...
总结,Java 中使用 JSON 可以借助如 Gson 或 Jackson 这样的库,它们提供了丰富的功能,使我们能够轻松地进行 JSON 序列化、反序列化、解析等操作。理解和熟练掌握这些工具和概念,对于日常的 Java 开发工作至关重要...
- 遍历所有属性,获取属性名和对应的 getter 方法,并将属性名及值转换为 JSON 格式添加到 `json` 中。 - 最后将末尾的逗号替换为 `}` 并返回最终的 JSON 字符串。 3. **`listToJson` 方法**: - 接收一个 `List...
- 为了提高性能,可以考虑使用Gson或Jackson库作为JSON序列化和反序列化的后端,因为它们通常比内置的JSON插件更快。 总的来说,Struts 2的JSON插件是实现JSON支持的关键组件,它使得Struts 2能够无缝地与JSON数据...
不过,对于更复杂的需求,如JSON Schema验证、映射到Java对象等,可能需要使用更强大的库,如Jackson或Gson。 使用`org.json.zip`之前,需要将该jar包添加到项目的类路径中。如果是Maven项目,可以通过在pom.xml...
只需将`ObjectMapper`替换为`Gson`,然后使用`toJson()`和`fromJson()`方法进行转换。 7. **源码分析** 博文可能深入分析了Jackson库的源码,解释了其内部的工作原理,如对象映射机制、序列化过程等,这对于理解...
- 在实际应用中,json-patch常常与JSON Pointer一起使用,JSON Pointer是一种标准格式,用于在JSON对象中定位特定的值。 6. 应用场景: - RESTful API:JSON Patch特别适合在更新资源时只发送需要修改的部分,而...