`

Gson替换json中name的值

    博客分类:
  • java
阅读更多
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());

	}

}

 

分享到:
评论
1 楼 后来我们都老了 2018-04-21  
请问有没有更简单的方法?

相关推荐

    JSON和GSON jar包

    例如,你有一个User类,包含name和age属性,你可以创建一个User对象,然后使用Gson库的`toJson()`方法将其转换为JSON字符串: ```java public class User { private String name; private int age; // getters ...

    gson 需要的jar

    在Java开发中,Gson库被广泛用于数据序列化和反序列化,特别是在网络通信、存储或展示JSON数据时。在本篇文章中,我们将深入探讨Gson库的基本用法、核心概念以及如何在项目中引入Gson库所需的jar文件。 首先,我们...

    网页获取JSON中文返回乱码解决方案(java + js)

    `decodeUnicode`函数通过正则表达式匹配并替换JSON字符串中的Unicode转义序列,将其转化为对应的UTF-8字符。 总结来说,解决JSON中文乱码问题的关键在于确保JSON数据从生成到传输再到解析的整个过程中,始终使用UTF...

    json与bean,array,list,map,简单类型之间的封装、解析

    只需要将`String[].class`替换为`List&lt;String&gt;.class`,Gson会自动处理JSON数组到List的转换。 再者,JSON与Map的转换。Map在Java中用于存储键值对,Gson同样支持这种转换: ```java Map, String&gt; map = new ...

    Json解析辅助.zip

    - 搜索和替换:在大型JSON文件中查找特定内容并进行替换。 - 编辑:允许用户直接编辑JSON数据,快速调整数据结构。 5. 使用注意事项: - 软件仅用于学习,不可用于商业用途,以遵守版权和许可协议。 - 使用时...

    json需要的包 json包 json.jar

    请替换“最新版本号”为实际的库版本号,可以在Maven中央仓库或Gradle仓库中查找。 通过以上介绍,你可以了解到在Java中处理JSON数据时的一些常见库和基本操作。无论是进行网络请求的响应解析,还是存储和传输数据...

    json 的生成和解析

    在Java中,处理JSON的库有很多,如Gson、Jackson、org.json、Fastjson等。这些库提供了方便的API来实现JSON的生成和解析。 1. Gson库:由Google开发,可以直接将Java对象转换为JSON字符串,反之亦然。例如: ```...

    百度sdk源码授权登陆和gson解析个人信息

    UserInfo userInfo = gson.fromJson(responseJson, UserInfo.class); // 使用解析出的userInfo对象 } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable ...

    android_json

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和编写数据。JSON是独立于语言的,但与JavaScript语法非常相似,这使得它成为Android应用程序中理想...

    org.json Jar包

    `org.json` Jar包是Java开发中常用的JSON处理库,由`org.json`组织提供,主要用于解析、生成和操作JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    在Java中,处理JSON主要有两个流行的库:Jackson和Gson。 标题和描述提及的是将JSON字符串转换为Java对象,特别是涉及多层嵌套和List集合的情况。这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含...

    json解析java jar包

    在Java中,处理JSON通常需要用到特定的库,如Jackson、Gson、org.json等。 本主题将探讨如何在Java中使用jar包进行JSON解析。首先,我们需要引入相应的jar包。例如,如果你选择使用Jackson库,你需要下载`jackson-...

    Java的JSON转换类库GSON的基础使用教程

    上述代码中,使用了Gson类的toJson()方法,将Java对象People转换为JSON格式的字符串,并打印到控制台。转换的结果为:`{"name":"People","age":20,"setName":true}`。 如果需要定制GSON的行为,比如排除某些字段不...

    JsonObject 与JsonArray 使用时的相关最新jar包(用于java 解析json)

    在Java编程中,处理JSON数据是一项常见的任务,而`JsonObject`和`JsonArray`是Gson库中的两个核心类,用于解析和构建JSON对象和数组。Gson是Google提供的一个开源库,它允许我们将Java对象转换为JSON字符串,反之...

    java 使用JSON

    总结,Java 中使用 JSON 可以借助如 Gson 或 Jackson 这样的库,它们提供了丰富的功能,使我们能够轻松地进行 JSON 序列化、反序列化、解析等操作。理解和熟练掌握这些工具和概念,对于日常的 Java 开发工作至关重要...

    ajax json java 用法 json 将List、Object转换为Json格式字符串

    - 遍历所有属性,获取属性名和对应的 getter 方法,并将属性名及值转换为 JSON 格式添加到 `json` 中。 - 最后将末尾的逗号替换为 `}` 并返回最终的 JSON 字符串。 3. **`listToJson` 方法**: - 接收一个 `List...

    struts 2.0 与 2.1 需要的json插件

    - 为了提高性能,可以考虑使用Gson或Jackson库作为JSON序列化和反序列化的后端,因为它们通常比内置的JSON插件更快。 总的来说,Struts 2的JSON插件是实现JSON支持的关键组件,它使得Struts 2能够无缝地与JSON数据...

    org.json.zip

    不过,对于更复杂的需求,如JSON Schema验证、映射到Java对象等,可能需要使用更强大的库,如Jackson或Gson。 使用`org.json.zip`之前,需要将该jar包添加到项目的类路径中。如果是Maven项目,可以通过在pom.xml...

    java对象集合转json格式

    只需将`ObjectMapper`替换为`Gson`,然后使用`toJson()`和`fromJson()`方法进行转换。 7. **源码分析** 博文可能深入分析了Jackson库的源码,解释了其内部的工作原理,如对象映射机制、序列化过程等,这对于理解...

    JSON Patch java库之json-patch.rar

    - 在实际应用中,json-patch常常与JSON Pointer一起使用,JSON Pointer是一种标准格式,用于在JSON对象中定位特定的值。 6. 应用场景: - RESTful API:JSON Patch特别适合在更新资源时只发送需要修改的部分,而...

Global site tag (gtag.js) - Google Analytics