一、JSON的数据格式简介

JSON:JavaScript对象表示法(JavaScript Object Notation)。

JSON是存储和交换文本信息的语法

  • JSON是轻量级的文本数据交换格式
  • JSON独立于语言和平台
  • JSON具有自我描述性,更加利于理解

JSON与XML相比较而言,比XML更小,更快,更易解析。

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 使用数组
  • 不使用保留字

JSON语法

JSON语法是javascript对象表示语法的子集

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true/false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON对象可以在花括号中书写,对象可以包含多个名称/值对

{“firstName”:"John","secondName":"Doe"},其中,冒号“:”之后表示值,冒号之前表示键,不同的键值对用逗号隔开。

JSON数组在方括号中书写,数组可包含多个对象:

{
"employees":[
         {“firstName”:"John","lastName":"Doe"},
         {“firstName”:"Anna","lastName":"Smith"},
         {“firstName”:"Peter","lastName":"Jones"}
                  ]
}

根部的花括号表示这是一个整体的JSON数据,其中,employees表示键,该键对应的值是一个JSON数组,该数组中又包含了三个JSON对象,每个对象又包含了firstName,lastName这样一个值,并且,其中的每个对象也都是通过逗号分隔开的。(也就是说,数据中的对象是通过逗号分隔,数组中的对象也是通过逗号分隔的。)

二、使用Java读取JSON数据

首先,在www.json.org官网上,找到Java的类库,其中比较成熟且大多数开发者使用的是google-gson,(开VPN)。当前使用的包是google-gson-2.2.4。

在Eclipse中创建TestReadJSON工程。将gson-2.2.4拷贝到lib文件夹当中,刷新,右键单击,添加到路径当中(bulid path)。创建新的类ReadJSON.

import java.io.FileNotFoundException;
import java.io.FileReader;import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;public class ReadJSON {
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		try {
			//生成一个json解析器  
			JsonParser parser=new JsonParser();
			//创建一个Json对象
			JsonObject object=(JsonObject) parser.parse(new FileReader("test.json"));//读取的文件对象
			System.out.println("cat="+object.get("cat").getAsString());
			System.out.println("pop="+object.get("pop").getAsBoolean());

			JsonArray array=object.get("languages").getAsJsonArray();
			//遍历数组
			for(int i=0;i<array.size();i++){
				System.out.println("------------");
				JsonObject subOject=array.get(i).getAsJsonObject();
				System.out.println("id="+subOject.get("id").getAsInt());
				System.out.println("name="+subOject.get("name").getAsString());
				System.out.println("ide="+subOject.get("ide").getAsString());
			}
		} catch (JsonIOException | JsonSyntaxException | FileNotFoundException e) {
			e.printStackTrace();
		}	}
}

三、使用Java创建JSON数据

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;public class CreatJSON {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//首先 创建一个json对象
		JsonObject object=new JsonObject();
		object.addProperty("cat", "it");
		//创建一个JSON数组对象
		JsonArray array=new JsonArray();
		//创建数组对象内的3个对象
		JsonObject lan1=new JsonObject();
		lan1.addProperty("id", 1);
		lan1.addProperty("name", "Java");
		lan1.addProperty("ide", "Eclipse");		
		array.add(lan1);

		JsonObject lan2=new JsonObject();
		lan2.addProperty("id", 2);
		lan2.addProperty("name", "Swift");
		lan2.addProperty("ide", "XCode");		
		array.add(lan2);

		JsonObject lan3=new JsonObject();
		lan3.addProperty("id", 3);
		lan3.addProperty("name", "C#");
		lan3.addProperty("ide", "Visual Studio");		
		array.add(lan3);

		object.add("languages", array);
		object.addProperty("pop", true);

		System.out.println(object.toString());//转换成字符串输出
		//一个Json对象内包含三个对象(cat,array,pop)
	}}

运行完之后,可以将运行结果保存成为Test.json文件。(右键单击TestReadJSON工程,new  Untitle TextFile,保存到当前Java工程当中,命名为Test.json,也是第二部分中, ReadJSON.class读取的文件)。

四、生成的Test.json文件内容。

{
   "cat":"it",
   "languages":[
     {"id":1,"name":"Java","ide":"Eclipse"},
     {"id":2,"name":"Swift","ide":"XCode"},
     {"id":3,"name":"C#","ide":"Visual Studio"}
     ],
   "pop":true
}

以上只是菜鸟个人学习过程中的整理与记录,若有错误,欢迎指正。