java复杂json字符串转为java对象

Posted timelessmemoryli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java复杂json字符串转为java对象相关的知识,希望对你有一定的参考价值。

有复杂json串如下


"DEPT_ID":"1",
"DEPT_NAME":"教育部"

key值全部大写,并且又下划线分割;要求封装为如下bean

public class Bean 
	private String deptId;
	private String deptName;
	
	public String getDeptId() 
		return deptId;
	
	public void setDeptId(String deptId) 
		this.deptId = deptId;
	
	public String getDeptName() 
		return deptName;
	
	public void setDeptName(String deptName) 
		this.deptName = deptName;
	

那就需要对json串的key进行转换 使用的是json-lib

/**
	 * 将key转为标准命名方式
	 * @param str
	 * @return
	 */
	private static String transferToRegularName(String str) 
			
		char[] chars = str.toCharArray();
		
		char[] res = new char[chars.length];
		
		for(int i = 0, j = 0; i < chars.length;) 
			
			if (chars[i] != '_') 
				res[j] = Character.toLowerCase(chars[i]);
				
				if ((i + 1) < chars.length) 
					if (chars[i + 1] == '_') 
						res[j + 1] = chars[i + 2];
						j = j + 2;
						i = i + 3;
					 else 
						i++;
						j++;
					
				 else 
					i++;
					j++;
				
			 else 
				res[j] = chars[i + 1];
				j = j + 1;
				i = i + 2;
			
		
		
		return new String(res).trim();
	
	
	/**
	 * 格式化json并转为bean
	 * @param jsonObject
	 * @param clz
	 * @return
	 */
	public static <T> T transferToObject(JSONObject jsonObject, Class<T> clz) 
		
		JSONObject result = new JSONObject();
		
		Iterator<String> keys = jsonObject.keys();
		
		while(keys.hasNext()) 
			String key = keys.next();
			result.put(transferToRegularName(key), jsonObject.get(key));
		
		
		return (T)JSONObject.toBean(result, clz);
	

 

以上是关于java复杂json字符串转为java对象的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中如何将一个json形式的字符串转为json对象?

java对象转为json字符串

把json对象转为java对象报错

Json系列:Gson简单使用,把json字符串转为java对象。

json字符串怎么转换为java对象

json字符串怎么转换为java对象?