java中的JSON操作

一、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
}

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

posted @ 2017-12-19 22:42  小燕子飞飞  阅读(933)  评论(0编辑  收藏  举报