几种json转换

原创 2016年08月30日 15:17:17

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。


以下展示三种处理json的java类库:

自定义的转换对象:

public class Element implements Serializable {
	private String groupId;
	private String artifactId;
	private String version;

	public String getGroupId() {
		return groupId;
	}

	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	public String getArtifactId() {
		return artifactId;
	}

	public void setArtifactId(String artifactId) {
		this.artifactId = artifactId;
	}

	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version;
	}

	public String toString() {
		return "GroupId: " + groupId + "\nArtifactId: " + artifactId
				+ "\nVersion: " + version;
	}
}

Gson:

public class GsonUtil {
	public static String bean2Json(Object obj) {
		Gson gson = new GsonBuilder().create();
		return gson.toJson(obj);
	}

	public static <T> T json2Bean(String jsonStr, Class<T> objClass) {
		Gson gson = new GsonBuilder().create();
		return gson.fromJson(jsonStr, objClass);
	}

	/**
	 * 把混乱的json字符串整理成缩进的json字符串
	 * 
	 * @param uglyJsonStr
	 * @return
	 */
	public static String jsonFormatter(String uglyJsonStr) {
		Gson gson = new GsonBuilder().setPrettyPrinting().create();
		JsonParser jp = new JsonParser();
		JsonElement je = jp.parse(uglyJsonStr);
		String prettyJsonString = gson.toJson(je);
		return prettyJsonString;
	}
}

Jaskon:(最快?)

public class JaskonUtil {
	public static String bean2Json(Object obj) throws IOException {
		ObjectMapper mapper = new ObjectMapper();
		StringWriter sw = new StringWriter();
		JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
		mapper.writeValue(gen, obj);
		gen.close();
		return sw.toString();
	}

	public static <T> T json2Bean(String jsonStr, Class<T> objClass)
			throws JsonParseException, JsonMappingException, IOException {
		ObjectMapper mapper = new ObjectMapper();
		return mapper.readValue(jsonStr, objClass);
	}
}

FastJson:

public class FastJsonUtil {
	public static String bean2Json(Object obj) {
		return JSON.toJSONString(obj);
	}

	public static <T> T json2Bean(String jsonStr, Class<T> objClass) {
		return JSON.parseObject(jsonStr, objClass);
	}
}
主程序调用:

public class MainActivity extends Activity implements OnClickListener {
	/**
	 * 
	 <Element> <groupId>org.codehaus.jackson</groupId>
	 * <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version>
	 * </Element>
	 */
	private final static String testString = "{\"artifactId\":\"jackson-mapper-asl\",\"groupId\":\"org.codehaus.jackson\",\"version\":\"1.9.13\"}";
	private Button btnGson;
	private Button btnJackson;
	private Button btnFastjson;
	private TextView tvResult;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		tvResult = (TextView) findViewById(R.id.result);
		btnGson = (Button) findViewById(R.id.gson);
		btnJackson = (Button) findViewById(R.id.jackson);
		btnFastjson = (Button) findViewById(R.id.fastjson);
		btnGson.setOnClickListener(this);
		btnJackson.setOnClickListener(this);
		btnFastjson.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		int id = v.getId();
		switch (id) {
		case R.id.gson:
			// json转对象
			Element element = GsonUtil.json2Bean(testString, Element.class);
			tvResult.setText(element.toString());
			// ------------------------------------------
			// 对象转json
			/*
			Element element = new Element();
			element.setGroupId("testGroupId");
			element.setArtifactId("testAId");
			element.setVersion("1.1.1");
			String res = GsonUtil.bean2Json(element);
			Log.i("MainActivity", res);
			tvResult.setText(res);
			*/
			// ------------------------------------------
			// 格式化
			/*
			String res = GsonUtil.jsonFormatter(testString);
			tvResult.setText(res);
			*/
			break;
		case R.id.jackson:
			// json转对象
			try {
				element = JaskonUtil.json2Bean(testString, Element.class);
				tvResult.setText(element.toString());
			} catch (JsonParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (JsonMappingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// ------------------------------------------
			// 对象转json
			/*
			element = new Element();
			element.setGroupId("testGroupId");
			element.setArtifactId("testAId");
			element.setVersion("1.1.1");
			String res;
			try {
				res = JaskonUtil.bean2Json(element);
				tvResult.setText(res);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			*/
			break;
		case R.id.fastjson:
			// json转对象
			element = FastJsonUtil.json2Bean(testString, Element.class);
			tvResult.setText(element.toString());
			// ------------------------------------------
			// 对象转json
			/*
			element = new Element();
			element.setGroupId("testGroupId");
			element.setArtifactId("testAId");
			element.setVersion("1.1.1");
			String res = FastJsonUtil.bean2Json(element);
			tvResult.setText(res);
			*/
			break;
		default:
			break;
		}
	}

}

参考:http://www.cnblogs.com/windlaughing/p/3241776.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JSON几种转换方法

JSON几种转换方法   1、  首先创建一个web程序, 在domain包下创建Student 和 Teacher 类。 在Teacher.java中封装name,sex,age,birth属...

json与Java对象 转换的几种方法

package com.yoyohr.bi.bean; import com.fasterxml.jackson.core.JsonGenerationException; import com....

前台 JSON对象转换成字符串 相互转换 的几种方式

在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ...

JavaScript中json字符串转换为json对象的几种方法

jQuery插件支持的转换方式:$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 注:这种只需要引入jqu...

JSON转Map的几种方式

1.解析库:fastJsonpackage com.zkn.newlearn.json;import com.alibaba.fastjson.JSON; import com.alibaba.fas...

Spring 注解的几种参数用途(@RequestParam @RequestBody)及JSON参数解析

Spring注解中能接受客户端传递过来的参数包括路径变量(url),内容变量(http body),头变量(header),COOKIE变量等几类。 1、路径变量 解析方式:@PathVariable...

几种常用JSON库性能比较

JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心,除非是在性能要求比较高的系统。 目前对于Java开源的JSON类库有很多种...

iOS中关于json解析的几种方式

http://mobile.51cto.com/iphone-386666.htm 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。 有的json代码...

IOS-Json解析的几种方法

作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)