一. 什么是 JSON ?
1. JavaScript Object Notation(JavaScript 对象表示法)
2.是存储和交换文本信息的语法。
3.比 XML 更小、更快,更易解析。
4.是轻量级的文本数据交换格式
二. JSON语法规则
JSON的语法规则非常的简单,就是使用
大括号’{}’,
中括号’[]’,
逗号’,’,
冒号’:’,
双引号’“”’。
数据类型:
ON数据解析
三. JSON解析类型:
1.如果看到是{ }–>字符串类型–>使用JSONObject
2.如果看到的[ ]–>数组类型–>使用JSONArray
1.字符串类型解析
/**
* JSON-->纯对象(Object)的解析
* 注:我们在eclipse里面操作JSON解析的时候需要第三方jar包的支持
*/
public static void main(String[] args) {
// 编辑一个我们要解析的数据对象
String json = "{'name':'李杨','age':24}";
// 创建JSON解析对象(两条规则的体现:大括号用JSONObject,注意传入数据对象)
JSONObject obj = new JSONObject(json);
// obj.后面有各种数据类型,根据对象来选择使用的数据类型
String name = obj.getString("name");
// 同理如上,这里的age为Int类型,我们就用对应的类型进行解析
int age = obj.getInt("age");
// 最后输出到控制台
System.out.println(name + "----" + age);
}
控制台:
李杨----24
2.数组类型解析
/**
* 对纯数组Aarry的解析
*/
public static void main(String[] args) {
// 编辑一个我们要解析的数据对象
String json = "['北京','上海','广州','深圳']";
// 创建JSON解析对象(两条规则的体现:中括号用JSONArray,注意传入数据对象)
JSONArray jArray = new JSONArray(json);
// 回想数组的取值的方式? --->for循环遍历数组--->得到值
for (int i = 0; i < jArray.length(); i++) {
// 根据解析的数据类型使用该类型的get方法得到该值,打印输出
String string = jArray.getString(i);
System.out.print(string + ",");
}
}
控制台:
北京,上海,广州,深圳,
3.字符串类型和数组类型
json
{
"School":"北京邮电大学",
"Teacher":[
{
"name":"胡一菲",
"age":"40",
"major":"计算机技术"
},
{
"name":"曾小贤",
"age":"33",
"major":"商务英语"
}
],
"address":"北京"
}
/**
* 字符串类型和数组类型的解析
*/
public static void main(String[] args) {
// 编辑一个我们要解析的数据对象
String json = "{'School':'北京邮电大学','Teacher':[{'name':'胡一菲','age':'40','major':'计算机技术'},{'name':'曾小贤','age':'33','major':'商务英语'}],'Address':'北京'}'";
//首先看到的是一个{}所以用JSON Object来进行解析
JSONObject ojson = new JSONObject(json);
String School = ojson.getString("School");
String Address = ojson.getString("Address");
//然后解析数组对象
JSONArray Teacher = ojson.getJSONArray("Teacher");
System.out.println(School+"--"+Address);
//回想数组的取值的方式? --->for循环遍历数组--->得到值
for (int i = 0; i < Teacher.length(); i++) {
JSONObject Ajson = Teacher.getJSONObject(i);
String name = Ajson.getString("name");
int age = Ajson.getInt("age");
String major = Ajson.getString("major");
System.out.println(name+"--"+age+"--"+major);
}
}
控制台:
北京邮电大学--北京
胡一菲--40--计算机技术
曾小贤--33--商务英语
发现一个比较强大的工具
Fastjson是一个Java语言编写的JSON处理器。
如果获得Fastjson?
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON
可以直接下载:
http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.0.4/fastjson-1.0.4.jar
http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.0.4/fastjson-1.0.4-sources.jar
首先要有工具类
public class OwnerGoods {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
这里只介绍字符的解析
package json;
import com.alibaba.fastjson.JSONObject;
public class Json01 {
/**
* JSON-->纯对象(Object)的解析 注:我们在eclipse里面操作JSON解析的时候需要第三方jar包的支持
*/
public static void main(String[] args) {
// 编辑一个我们要解析的数据对象
String json = "{'name':'李杨','age':24}";
//OwnerGoods.class 工具类
//JSONObject.parseObject 纯字符解析
OwnerGoods ownergoods = JSONObject.parseObject(json, OwnerGoods.class);
String Age = ownergoods.getAge();
String Name = ownergoods.getName();
System.out.println(Name + "+----+" + Age);
}
}
控制台
李杨<---->24
对于JSON解析个人的看法,
首先是对JSON数据的一个分析,明确解析思路
其次是掌握JSON一些技巧(两条规则–对象形JSONObject ,数组形JSONArray)