JSON快速

定义:JSON是一种与开发语言无关的,轻量级的数据格式,全称是Javascript Object Notation(JS对象标记)。也就是说,JSON只是一种数据格式或者说是规范。

原理:

JSON-java最重要的类有三个
JSONObject : 包装一个map。 用来表示一个{k:v,k2:v2,k3:[1,2]}形式的json数据
JSONArray :包装一个ArrayList。用来表示一个[1,2,{k:v}]形式的json数据
JSONTokener:包装一个Reader。用来存储、读取、操作一个表示JSON数据的字符串

过程:

1、JSONObject和JSONArray都可以用一个JSONTokener作为构造参数去实例化。
2、解析时可能会产生多个JSONObject或者JSONArray。但是他们都是操作同一个JSONTokener。
3、JSONObject和JSONArray可以分别通过JSONTokener提供的方法解析出对方。可以实现嵌套

JSON的规则: 对象是一个无序的 “ ‘名称/值’ 对” 集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

标准的JSON数据表示:

数据结构:

Object:使用花括号{}包含的键值对结构,key必须为string类型,value可以为任何类型或数据结构。

Array:使用中括号[]来起始,并用逗号来分隔元素。

基本数据类型

String,number,true,false,null

优点:易于人的阅读与编写,易于程序解析与生产。

例子:

{

“name”:“汪洋”,

“Mayjor”:[“数学”,“语文”,“英语”],

“学习好”:true

}

JSON在Java中的使用:

首先需要导入各种包:

		json-lib-2.3-jdk15.jar 
		commons-beanutils-1.7.0.jar 
		commons-httpclient-3.1.jar 
		commons-lang-2.3.jar 
		commons-logging-1.0.4.jar 
		commons-collections-3.1.jar 
这些包可以在这个链接下载:http://download.csdn.net/download/qq_31126879/9414430
对了,别忘了在开头同时需要import org.json.*(导入json各种包,比如,import org.json.JSONObject)
建立JSON对象:
	JSOObject json = new JSONObject();
	json.put(String,Object)
从文本中读入JSON对象:
	File file = new File(ReadJSONSample.class.getResource("/Wangxiaoer.json"));
	String content = FileUtils.readFileToString(file)
	JSONObject jsonobject = new JSONObject(content)
可执行代码:
package com.zhiwenwu.json0;

import net.sf.json.JSONException;
import net.sf.json.JSONObject;

//import org.json.JSONObject;
public class JsonObjectSample{
	public static void main(String[] args){
		jSONObject();
		}
private static void jSONObject(){
	JSONObject wangxiaoer = new JSONObject();//new一个JSONObject对象,命名为wangxiaoerObject nullObj = null; //解决put中因二义性引起的编译错误
try{
wangxiaoer.put("name","王小二");
wangxiaoer.put("age",25.2);
wangxiaoer.put("birthday","1990-01-01");
 wangxiaoer.put("school","蓝翔");
wangxiaoer.put("major",new String[] {"理发","挖掘机"});
wangxiaoer.put("has_girlfriend",false);
wangxiaoer.put("car",1);
wangxiaoer.put("house",1);
System.out.println(wangxiaoer.toString());//输出JSON格式的wangxiaoer数据
}catch(JSONException e){
e.printStackTrace();
 }
}
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章