json解析
2016-05-21 09:59
686 查看
什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。这种格式最早应用在JavaScript中,JSON 语法是 JavaScript 对象表示语法的子集。
在Java中提供了解析JSON格式的类库
java解析JSON的三种方式
1 使用开源组织实现的jar包(称为官方标准)http://json-lib.sourceforge.net/2 google的gson框架
3 阿里巴巴的fast-json
案例一
<pre name="code" class="java">package com.qf.day30_3; import java.util.Iterator; import org.json.JSONObject; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; /** * 使用三种方式解析json数据 * {name:"张三",age:20} * @author wgy * */ public class JsonDemo1 { public static void main(String[] args) throws Exception{ String json="{name:'张三',age:20}"; json(json); gson(json); fastjson(json); } /** * 官方 */ public static void json(String json) throws Exception{ JSONObject object=new JSONObject(json); String name=object.getString("name"); int age=object.getInt("age"); Person p=new Person(name, age); System.out.println(p.getName()+"---"+p.getAge()); // Iterator<String> it= object.keys(); // while(it.hasNext()){ // String key=it.next(); // System.out.println(key+"---"+object.get(key)); // } } /** * google */ public static void gson(String json){ Gson gson=new Gson(); Person p=gson.fromJson(json, Person.class); System.out.println(p.getName()+"---"+p.getAge()); } /** * 阿里巴巴 */ public static void fastjson(String json){ Person p=JSON.parseObject(json, Person.class); System.out.println(p.getName()+"---"+p.getAge()); } }
package com.qf.day30_3; public class Person { private String name; private int age; public Person() { // TODO Auto-generated constructor stub } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
案例二
package com.qf.day30_4; import org.json.JSONObject; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; /** * 使用json解析 * {name:"张三",age:20,dept:{no:1,name:"android"}} * @author wgy * */ public class JsonDemo2 { public static void main(String[] args) throws Exception{ String json="{name:'张三',age:20,dept:{no:1,name:'android'}}"; json(json); gson(json); fastjson(json); } /** * 官方 */ public static void json(String json) throws Exception{ JSONObject jsonObject=new JSONObject(json); String name=jsonObject.getString("name"); int age=jsonObject.getInt("age"); JSONObject dept=jsonObject.getJSONObject("dept"); int no=dept.getInt("no"); String deptname=dept.getString("name"); Person p=new Person(name, age, new Dept(no, deptname)); System.out.println(p.getName()+"---"+p.getAge()+"--"+p.getDept().getNo()+"--"+p.getDept().getName()); } /** * google */ public static void gson(String json){ Gson gson=new Gson(); Person p=gson.fromJson(json, Person.class); System.out.println(p.getName()+"---"+p.getAge()+"--"+p.getDept().getNo()+"--"+p.getDept().getName()); } /** * 阿里巴巴 */ public static void fastjson(String json){ Person p=JSON.parseObject(json, Person.class); System.out.println(p.getName()+"---"+p.getAge()+"--"+p.getDept().getNo()+"--"+p.getDept().getName()); } }
package com.qf.day30_4; public class Person { private String name; private int age; private Dept dept; public Person() { // TODO Auto-generated constructor stub } public Person(String name, int age, Dept dept) { super(); this.name = name; this.age = age; this.dept = dept; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } }
package com.qf.day30_4; public class Dept { private int no; private String name; public Dept() { // TODO Auto-generated constructor stub } public Dept(int no, String name) { super(); this.no = no; this.name = name; } public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
案例三
package com.qf.day30_5; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONObject; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; /** * 使用json解析 * {no:1,name:"android",employees:[{name:"zhangsan",age:20},{name:"lisi" * ,age:22},{name:"wangwu",age:23}]} * * @author wgy * */ public class JsonParseDemo3 { public static void main(String[] args) throws Exception{ String json = "{no:1,name:'android',employees:" + "[{name:'zhangsan',age:20}," + "{name:'lisi',age:22}," + "{name:'wangwu',age:23}]}"; json(json); gson(json); fastjson(json); } public static void json(String json)throws Exception { ArrayList<Person> persons=new ArrayList<>(); JSONObject jsonObject=new JSONObject(json); int no=jsonObject.getInt("no"); String name=jsonObject.getString("name"); JSONArray jsonArray=jsonObject.getJSONArray("employees"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject object=jsonArray.getJSONObject(i); String _name=object.getString("name"); int age=object.getInt("age"); persons.add(new Person(_name, age)); } Dept dept=new Dept(no, name, persons); System.out.println(dept.getNo()+"---"+dept.getName()+"---"+dept.getEmployees().size()); for (Person p : dept.getEmployees()) { System.out.println(" "+p.getName()+"--"+p.getAge()); } } public static void gson(String json) { Gson gson=new Gson(); Dept dept=gson.fromJson(json, Dept.class); System.out.println(dept.getNo()+"---"+dept.getName()+"---"+dept.getEmployees().size()); for (Person p : dept.getEmployees()) { System.out.println(" "+p.getName()+"--"+p.getAge()); } } public static void fastjson(String json) { Dept dept=JSON.parseObject(json, Dept.class); System.out.println(dept.getNo()+"---"+dept.getName()+"---"+dept.getEmployees().size()); for (Person p : dept.getEmployees()) { System.out.println(" "+p.getName()+"--"+p.getAge()); } } }
package com.qf.day30_5; import java.util.ArrayList; public class Dept { private int no; private String name; private ArrayList<Person> employees; public Dept() { // TODO Auto-generated constructor stub } public Dept(int no, String name, ArrayList<Person> employees) { super(); this.no = no; this.name = name; this.employees = employees; } public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public ArrayList<Person> getEmployees() { return employees; } public void setEmployees(ArrayList<Person> employees) { this.employees = employees; } }
package com.qf.day30_5; public class Person { private String name; private int age; public Person() { // TODO Auto-generated constructor stub } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
注意:Gson解析json时类里面的属性名必须跟Json字段里面的Key一模一样
案例五
package com.qf.day30_6; import org.json.JSONObject; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; /** * 把对象 转换成json字符串 * @author wgy * */ public class ObjToJson { public static void main(String[] args) { jsonToString(); gsonToString(); fastJsonToString(); } public static void jsonToString(){ Student stu=new Student(1001, "冰冰", 20, false); JSONObject jsonObject=new JSONObject(stu); String s=jsonObject.toString(); System.out.println(s); } public static void gsonToString(){ Student stu=new Student(1001, "冰冰", 20, false); Gson gson=new Gson(); String s=gson.toJson(stu); System.out.println(s); } public static void fastJsonToString(){ Student stu=new Student(1001, "冰冰", 20, false); String s=JSON.toJSONString(stu); System.out.println(s); } }
package com.qf.day30_6; public class Student { private int stuNo; private String name; private int age; private boolean gender; public Student() { // TODO Auto-generated constructor stub } public Student(int stuNo, String name, int age, boolean gender) { super(); this.stuNo = stuNo; this.name = name; this.age = age; this.gender = gender; } public int getStuNo() { return stuNo; } public void setStuNo(int stuNo) { this.stuNo = stuNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isGender() { return gender; } public void setGender(boolean gender) { this.gender = gender; } }
Gson解析数组格式的数据
public class GsonDemo2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String json="[{'id':3,'name':'香港'}]"; Gson gson = new Gson(); ArrayList<City> list = gson.fromJson(json, new TypeToken<ArrayList<City>>(){}.getType()); System.out.println(list); List<City> list2= JSON.parseArray(json, City.class); System.out.println(list2); }
相关文章推荐
- 使用 Python 处理 JSON 格式的数据
- Gson.toJson()时内存溢出StackOverflowError
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C# JSON格式化转换辅助类 ConvertJson
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP中JSON的应用技巧
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧