json 学习之(json基础)
一 json 简介
json(javascript object notation)javascript 对象表示方法。json是一种轻量级的文本数据交换格式,是一种存储和交换文本信息的语法。类似于xml,比xml更小,更快,更易解析。
重要的特点总结:没有结束标签,更短,读写的速度更快,不适用保留字,使用数组,更易读写,易解析和生产。
数据结构:对象和数组
基本类型:string、number、boolean、null等
例子:编写个人信息,要求包含个人姓名、年龄、性别、是否婚配、所学编程语言。
{
"姓名":"三郎",
"性别":"男",
"年龄":22,
"是否婚配":false,
"语言":[
{"编号":1,"语言名称":"java","编辑工具":"myeclipse"},
{"编号":2,"语言名称":"c#","编辑工具":"visual studio"},
{"编号":3,"语言名称":"html","编辑工具":"Hbuilder"}
]
}
二 使用java读取json数据
前提条件:使用java操作json,必须要有java的类库,现在比较成熟、简单且被广大开发人员所使用的java类库是google-gson,可以先下载这个google-gson-2.2.4.zip。
第一步:使用myeclipse创建项目testjson
第二步在项目testjson下创建文件夹lib
第三步 将下载好的google-gson-2.2.4.zip解压,将里面的gson-2.2.4.jar文件放到lib目录下,然后选中gson-2.2.4.jar
点击右键build path
第四步将messages.json放到testjon项目下面 创建测试文件test.java(注意:messages.json是最开始)
第五步 创建测试类
demo.java
下面是详细代码
package com.testjson;
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;
/**
* 使用java来读取json数据
* */
public class Demo {
public static void main(String[] args) {
try {
JsonParser parser=new JsonParser();
JsonObject jo=(JsonObject) parser.parse(new FileReader("messages.json"));
System.out.println("姓名:"+jo.get("姓名").getAsString());
System.out.println("性别:"+jo.get("性别").getAsString());
System.out.println("年龄:"+jo.get("年龄").getAsInt());
System.out.println("是否婚配:"+jo.get("是否婚配").getAsBoolean());
//这里是遍历数组 循环输出
System.out.println("所学编程语言:");
JsonArray array=jo.get("语言").getAsJsonArray();
for (int i = 0; i < array.size(); i++) {
JsonObject o=array.get(i).getAsJsonObject();
System.out.println("编号:"+o.get("编号").getAsInt()+"--"+"语言名称:"+o.get("语言名称").getAsString()+"--"+"编辑工具:"+o.get("编辑工具").getAsString());
}
} catch (JsonIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonSyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第六步 控制台输出