Json工具(FastJson阿里巴巴,gson或jackJson谷歌)自己随便写的工具。

一 FastJson

依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.47</version>
</dependency>

常用API

// 把JSON文本parse为JSONObject或者JSONArray 
public static final Object parse(String text);

// 把JSON文本parse成JSONObject
public static final JSONObject parseObject(String text); 

// 把JSON文本parse为JavaBean    
public static final <T> T parseObject(String text, Class<T> clazz);

// 把JSON文本parse成JSONArray
public static final JSONArray parseArray(String text); 

//把JSON文本parse成JavaBean集合  
public static final <T> List<T> parseArray(String text, Class<T> clazz); 

// 将JavaBean序列化为JSON文本
public static final String toJSONString(Object javaObject);

// 将JavaBean序列化为带格式的JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); 

//将JavaBean转换为JSONObject或者JSONArray。
public static final Object toJSON(Object javaObject); 

eg:

package com.hangzhou.json.fastjson;

import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.hangzhou.json.pojo.User;

public class JsonToll {

	public static void main(String[] args) {

		User user = new User(1, "李格宇", 24, "篮球");
		System.out.println("111javaBean:" + user);

		// javaBena转jsonObject
		Object json = JSON.toJSON(user);
		System.out.println("222jsonObject:" + json);

		// javaBean转String
		String jsonString = JSON.toJSONString(user);
		System.out.println("333jsonString:" + jsonString);

		// String转javaBena
		User user1 = JSON.parseObject(jsonString, User.class);
		System.out.println("444user1:" + user1);
		
		// String转StringArray
		String jsonStringArray = "[" + json + "," + json + "]";
		System.out.println("555jsonStringArray:" + jsonStringArray);

		// String转JSONArray
		JSONArray parseArray = JSON.parseArray(jsonStringArray);
		System.out.println("666JSONArray:" + parseArray);
		
		// StringArray转List<javaBena>
		List<User> users = JSON.parseArray(jsonStringArray, User.class);
		System.out.println("777users:"+users);

	}

}

Console:

111javaBean:User [userId=1, name=李格宇, age=24, hobby=篮球]
222jsonObject:{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"}
333jsonString:{"age":24,"hobby":"篮球","name":"李格宇","userId":1}
444user1:User [userId=1, name=李格宇, age=24, hobby=篮球]
555jsonStringArray:[{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"},{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"}]
666JSONArray:[{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"},{"name":"李格宇","userId":1,"age":24,"hobby":"篮球"}]
777users:[User [userId=1, name=李格宇, age=24, hobby=篮球], User [userId=1, name=李格宇, age=24, hobby=篮球]]

二  Gson 或  JackJson

依赖

<dependency>
     <groupId>com.google.code.gson</groupId>
     <artifactId>gson</artifactId>
     <version>2.3.1</version>
 </dependency>

eg:

package com.hangzhou.json.gson;

import com.google.gson.Gson;
import com.hangzhou.json.pojo.User;

public class JackJson{
	
	public static void main(String[] args) {
		
		User user = new User(2, "李格宇", 100, "篮球");
		
		Gson gson = new Gson();
		
		String json = gson.toJson(user);
		
		
		User fromJson = gson.fromJson(json, User.class);
		
	}
	
}

手写垃圾json化工具:还差一个对值根据类型加双引号。

package com.hangzhou.json;

import java.lang.reflect.Field;
import java.util.Arrays;

public class JsonUtil{
	
	
	public static String toJSON(Object obj) throws IllegalArgumentException, IllegalAccessException {
		
		Field[] declaredFields = obj.getClass().getDeclaredFields();
		
		StringBuffer valueString = new StringBuffer();
		/*
		 * System.out.println(Arrays.toString(declaredFields)); //[private long
		 * com.hangzhou.json.pojo.User.userId, private java.lang.String
		 * com.hangzhou.json.pojo.User.name, private java.lang.Integer
		 * com.hangzhou.json.pojo.User.age, private java.lang.String
		 * com.hangzhou.json.pojo.User.hobby]
		 * 
		 * declaredFields[0].setAccessible(true);//打开私有化权限
		 * System.out.println(declaredFields[0].getName());//userId
		 * System.out.println(declaredFields[0].get(obj));//2
		 * System.out.println(declaredFields[0].getType());//long
		 * System.out.println(declaredFields[0].getGenericType());//long
		 */		
		valueString.append("{");
		for (Field field : declaredFields) {
			
			field.setAccessible(true);
			valueString.append("'"+field.getName()+"':");
			valueString.append(field.get(obj)+",");
			
		}
		valueString.deleteCharAt(valueString.length()-1);
		
		valueString.append("}");
		
	
		
		return valueString.toString();
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值