Json for Java 代码示例

来源:互联网 发布:淘宝xbox360手柄一百多 编辑:程序博客网 时间:2024/06/06 12:28

Gson 是 Google 写的一个 json 操作库,用起来很方便,不依赖任何外部 jar 包。

Json-lib 是 纯正血统版,依赖了如下一些 jar 包(这里使用的 Json-lib 的版本为 2.4-jdk15):

commons-beanutils

commons-collections

commons-lang

commons-logging

ezmorph

下面是一个代码示例:

GsonUtilUsage.java

package org.bruce.json.test;import java.util.ArrayList;import java.util.List;import org.bruce.locator.utils.GsonUtil;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/** * @author kodeyang * */public class GsonUtilUsage {/** * @param args */public static void main(String[] args) {Sprite node0 = new Sprite("abc.png");Sprite node1 = new Sprite("123.png");List<Sprite> nodeList = new ArrayList<Sprite>();nodeList.add(node0);nodeList.add(node1);// 将 Sprite 对象列表转换成 Json 数组~JSONArray jsonArray = JSONArray.fromObject(nodeList);// 以紧凑的方式打印得到的 json 字符串~System.out.println(jsonArray);System.out.println("---------------- 俊俏的分割线 ----------------");// 以格式化的方式打印得到的 json 字符串~System.out.println(GsonUtil.format(jsonArray.toString()));System.out.println("---------------- 清新的分割线 ----------------");// 将单个 Sprite 对象转换为 JSONObject 对象~JSONObject jsonObj = JSONObject.fromObject(node0);System.out.println(jsonObj);System.out.println("---------------- 风骚的分割线 ----------------");// 将 json 字符串解析为 Sprite 对象~Sprite sprite = (Sprite) GsonUtil.jsonToBean(jsonObj.toString(), Sprite.class);System.out.println(sprite);}}

代码输出为:

[{"height":0,"image":"abc.png","visible":true,"width":0,"zorder":0},{"height":0,"image":"123.png","visible":true,"width":0,"zorder":0}]---------------- 俊俏的分割线 ----------------[  {    "height": 0,    "image": "abc.png",    "visible": true,    "width": 0,    "zorder": 0  },  {    "height": 0,    "image": "123.png",    "visible": true,    "width": 0,    "zorder": 0  }]---------------- 清新的分割线 ----------------{"height":0,"image":"abc.png","visible":true,"width":0,"zorder":0}---------------- 风骚的分割线 ----------------abc.png(0, 0)

GsonUtil.java

package org.bruce.json.test;import java.lang.reflect.Type;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.JsonDeserializationContext;import com.google.gson.JsonDeserializer;import com.google.gson.JsonElement;import com.google.gson.JsonParseException;import com.google.gson.JsonParser;import com.google.gson.JsonPrimitive;import com.google.gson.JsonSerializationContext;import com.google.gson.JsonSerializer;/** * @author lee.li * json 简单操作的工具类 * http://www.oschina.net/code/snippet_566353_10898 * 仅依赖 gson-2.2.4.jar */public class GsonUtil {// 紧凑的(不带格式的)~private static Gson gsonTight = new Gson();// 美观的(带格式的)~private static Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();/** * 格式化 json 字符串~ * @param ugly * @return */public static String format(String ugly){JsonElement je = new JsonParser().parse(ugly);String strPrettyJson = gsonPretty.toJson(je);return strPrettyJson;}/** * 将对象转换成json格式 *  * @param ts * @return */public static String objectToJson(Object obj) {String strJson = null;if (gsonTight != null) {strJson = gsonTight.toJson(obj);}return strJson;}/** * 将对象转换成json格式(并自定义日期格式) *  * @param ts * @return */public static String objectToJsonDateSerializer(Object ts,final String dateformat) {String jsonStr = null;gsonTight = new GsonBuilder().registerTypeHierarchyAdapter(Date.class,new JsonSerializer<Date>() {public JsonElement serialize(Date src,Type typeOfSrc,JsonSerializationContext context) {SimpleDateFormat format = new SimpleDateFormat(dateformat);return new JsonPrimitive(format.format(src));}}).setDateFormat(dateformat).create();if (gsonTight != null) {jsonStr = gsonTight.toJson(ts);}return jsonStr;}/** * 将json格式转换成list对象 *  * @param jsonStr * @return */public static List<?> jsonToList(String jsonStr) {List<?> objList = null;if (gsonTight != null) {java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<?>>() {}.getType();objList = gsonTight.fromJson(jsonStr, type);}return objList;}/** * 将json格式转换成map对象 *  * @param jsonStr * @return */public static Map<?, ?> jsonToMap(String jsonStr) {Map<?, ?> objMap = null;if (gsonTight != null) {java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<?, ?>>() {}.getType();objMap = gsonTight.fromJson(jsonStr, type);}return objMap;}/** * 将json转换成bean对象 *  * @param jsonStr * @return */public static Object jsonToBean(String jsonStr, Class<?> cl) {Object obj = null;if (gsonTight != null) {obj = gsonTight.fromJson(jsonStr, cl);}return obj;}/** * 将json转换成bean对象 *  * @param jsonStr * @param cl * @return */@SuppressWarnings("unchecked")public static <T> T jsonToBeanDateSerializer(String jsonStr, Class<T> cl,final String pattern) {Object obj = null;gsonTight = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {public Date deserialize(JsonElement json, Type typeOfT,JsonDeserializationContext context)throws JsonParseException {SimpleDateFormat format = new SimpleDateFormat(pattern);String dateStr = json.getAsString();try {return format.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return null;}}).setDateFormat(pattern).create();if (gsonTight != null) {obj = gsonTight.fromJson(jsonStr, cl);}return (T) obj;}/** * 根据 *  * @param jsonStr * @param key * @return */public static Object getJsonValue(String jsonStr, String key) {Object rulsObj = null;Map<?, ?> rulsMap = jsonToMap(jsonStr);if (rulsMap != null && rulsMap.size() > 0) {rulsObj = rulsMap.get(key);}return rulsObj;}}
Sprite.java

package org.bruce.json.test;/** * @author kodeyang * */public class Sprite {private String image;private int width;private int height;private int zorder = 0;private boolean visible = true;public Sprite() {// TODO Auto-generated constructor stub}public Sprite(String image) {this.image = image;}public Sprite(String image, boolean visible, int zorder) {this.image = image;this.visible = visible;this.zorder = zorder;}@Overridepublic String toString() {StringBuffer sb = new StringBuffer();sb.append(image).append("(").append(width).append(", ").append(height).append(")");return sb.toString();}public String getImage() {return image;}public void setImage(String image) {this.image = image;}public boolean isVisible() {return visible;}public void setVisible(boolean visible) {this.visible = visible;}public int getZorder() {return zorder;}public void setZorder(int zorder) {this.zorder = zorder;}public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}}