一、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
}
以上只是菜鸟个人学习过程中的整理与记录,若有错误,欢迎指正。