博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON以及Java转换JSON的方法(前后端经常使用处理方法)
阅读量:6041 次
发布时间:2019-06-20

本文共 5654 字,大约阅读时间需要 18 分钟。

本文主要讲述例如以下几个内容:

1、JSON定义以及JSON的特性

2、怎样在JavaScript中解释JSON格式数据

3、怎样在Java代码中使用JSON(讲对象转换成JSON对象以及解释JSON字符串)

一、JSON

   w3c上对JSON有比較具体的介绍。链接.以下仅讲述重要的几点。

Json是 JavaScript 对象表示法(JavaScript Object Notation)。是轻量级的文本数据交换格式,具有层级结构(值中存在值), 数据可使用 AJAX 进行传输,独立于语言,具有自我描写叙述性。比XML更小更快更easy解析。

JSON格式字符串转化为JavaScript对象无需解析器。 JSON 使用 JavaScript 语法。使用JavaScript的eval()函数可生成JavaScript对象。

以下给出JSON格式的数据,很清晰,无需多做解释,语法请阅读官方文档。

标准JSON格式数据

{ "firstName":"John" , "lastName":"Doe" }
标准JSON格式数组数据

{"employees": [{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" },{ "firstName":"Peter" , "lastName":"Jones" }]}
或直接赋值给变量:

var employees = [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName": "Carter" }];

二、在JavaScript中解释JSON数据

JSON 最常见的使用方法之中的一个。是从 web server上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

以下直接给出代码演示样例:

	Click me!
 

直接保存为后缀名为html或htm的文件。用浏览器打开,就能够測试执行结果了。

三、Java操作JSON

1、Josn-lib

JSON-lib这个Java类包用于把bean,map和XML转换成JSON并可以把JSON转回成bean和DynaBean。

下载地址:http://json-lib.sourceforge.net/

还要须要的第3方包:

rg.apache.commons(3.2以上版本号)

org.apache.oronet.sf.

ezmorph(ezmorph-1.0.4.jar)

nu.xom

以下直接给出代码:

package com.doyeden.json;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.beanutils.PropertyUtils;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.xml.XMLSerializer;public class TestJson {	public static void main(String[] args) {		// 1. List		boolean[] booleanArray = new boolean[] { false, false, true, false };		JSONArray ja = JSONArray.fromObject(booleanArray);		System.err.println(ja);		List list = new ArrayList();		list.add("first");		list.add("second");		JSONArray jsonArray2 = JSONArray.fromObject(list);		System.out.println(jsonArray2);		JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']");		System.out.println(jsonArray3);		// 2. Map		Map map = new HashMap();		map.put("name", "json");		map.put("bool", Boolean.TRUE);		map.put("int", new Integer(1));		map.put("arr", new String[] { "a", "b" });		map.put("func", "function(i){ return this.arr[i]; }");		JSONObject json = JSONObject.fromObject(map);		System.out.println(json);		// 3. JSON Bean		JSONObject jsonObject = JSONObject.fromObject(new JsonBean("kevin",				"Male"));		System.out.println(jsonObject);		// 4. Json Beans		List
lbs = new ArrayList
(); JsonBean j1 = new JsonBean("kevin", "Male"); JsonBean j2 = new JsonBean("maimai", "Femal"); lbs.add(j1); lbs.add(j2); JSONArray ja_beans = JSONArray.fromObject(lbs); System.out.println(ja_beans); }}

以下的类的get和set方法必须有才干够

package com.doyeden.json;public class JsonBean {	private String name;	private String sex;		public JsonBean() {		super();	}	public JsonBean(String name, String sex) {		super();		this.name = name;		this.sex = sex;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public String getSex() {		return sex;	}	public void setSex(String sex) {		this.sex = sex;	}	}

程序执行结果:

[false,false,true,false]["first","second"]["json","is","easy"]{"arr":["a","b"],"int":1,"name":"json","func":function(i){ return this.arr[i]; },"bool":true}{"name":"kevin","sex":"Male"}[{"name":"kevin","sex":"Male"},{"name":"maimai","sex":"Femal"}]
2、 眼下比較流行的fast-json解析 ,很多其它fast-json请自行查阅文档

阿里巴巴FastJson是一个Json处理工具包,包含“序列化”和“反序列化”两部分,它具备例如以下特征:

速度最快,測试表明,fastjson具有极快的性能,超越任其它的Java Json parser。

包含自称最快的JackJson。

功能强大。全然支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,可以直接执行在

Java SE 5.0以上版本号;支持Android;开源 (Apache 2.0)

Fastjson API入口类是com.alibaba.fastjson.JSON,经常使用的序列化操作都能够在JSON类上的静态方法直接完毕。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text)。 // 把JSON文本parse成JSONObject    
public static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

  实例代码:

(须要导入fastjson的jar包)

package com.doyeden.json.fastjson;import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;import com.doyeden.json.JsonBean;public class Test {	public static void main(String[] args) {				//1 parse bean to json text		JsonBean jb=new JsonBean("kevin","Male");		System.out.println(JSON.toJSONString(jb));				//2 parse list to json array		List
ljs=new ArrayList
(); JsonBean jb1=new JsonBean("kevin","Male"); JsonBean jb2=new JsonBean("maimai","Female"); ljs.add(jb2); ljs.add(jb1); System.out.println(JSON.toJSONString(ljs)); //3 parse json text to bean String s="{\"name\":\"greg\",\"sex\":\"Male\"}"; JSON jO=JSON.parseObject(s); JsonBean j=JSON.toJavaObject(jO, JsonBean.class); System.out.println(j.getName()); }}

结果:

{"name":"kevin","sex":"Male"}

[{"name":"maimai","sex":"Female"},{"name":"kevin","sex":"Male"}]
greg

3、其它方式。比如 org-lib等,用法跟上述两种方式很相似。就不做很多其它介绍了。

个人推荐还是使用fast-json。

总结:本文讲述了JSON格式数据以及怎样在JavaScript和Java代码中操作JSON格式数据,能够发现。由于JSON自解释性,轻量级。体积小,跨平台等特点。JSON格式数据非常适合作为和后端数据交互的格式。JavaScript本身就能够解释JSON,这样就省去了非常多第三方库。java中,关于讲JSON转换成Java对象以及讲Java对象和对象数组转换成JSON格式数据的类库事实上有非常多,可是眼下来说最快的是fastjson.

转载于:https://www.cnblogs.com/gavanwanggw/p/7101365.html

你可能感兴趣的文章
Windows安装Composer出现【Composer Security Warning】警告
查看>>
dutacm.club Water Problem(矩阵快速幂)
查看>>
企业架构研究总结(22)——TOGAF架构开发方法(ADM)之信息系统架构阶段
查看>>
接口测试(三)--HTTP协议简介
查看>>
周志华《机器学习》课后答案——第4章.决策树
查看>>
frameset分帧问题
查看>>
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现
查看>>
C#+QQEmail自动发送邮件
查看>>
[Hadoop]MapReduce多输出
查看>>
Android Activity详解(一)
查看>>
快准车服完成3000万元A+轮融资,年底将开始B轮融资
查看>>
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>