标签:
JSON解析除了导入json包,通过JSONObject类和JSONArray类进行解析外,还有其他的解析方法,如谷歌Gson解析和阿里巴巴FastJson解析,它们都需要导入相应的包。
下面主要介绍Gson解析和FastJson解析:
1.Gson解析:
Gson解析JSON字符串的步骤:
1.创建Gson对象
Gson gson = new Gson();
2.调用Gson的解析方法,fromJson()
其中比较常用的是:
1)fromJson(String json,Class<T> classOfT);
2)fromJson(String json,Type typeOfT);
第一种方法第二个参数是一个.Class对象,该方法返回的是一个类的对象,它解析的原JSON字符串是一个对象形式
第二种方法第二个参数是一个Type对象,该方法返回的是一个List<T>集合,它解析的原JSON字符串是一个数组形式
TypeToken<T> token = new TypeToken<T>(){};
Type type = token.getType();
示例1:
运行结果:
示例2:
1 package com.gson; 2 3 import java.util.List; 4 5 import org.json.JSONArray; 6 import org.json.JSONException; 7 import org.json.JSONObject; 8 9 import com.google.gson.Gson; 10 import com.google.gson.reflect.TypeToken; 11 12 public class Test2 { 13 public static void main(String[] args) throws JSONException { 14 String json = "{persons:[{name:‘jack‘,age:23},{name:‘tom‘,age:20}]}"; 15 16 JSONObject object = new JSONObject(json); 17 JSONArray array = object.getJSONArray("persons"); 18 19 Gson gson = new Gson(); 20 TypeToken<List<Person>> token = new TypeToken<List<Person>>() { 21 }; 22 List<Person> list = gson.fromJson(array.toString(), token.getType()); 23 System.out.println(list); 24 } 25 26 class Person { 27 String name; 28 String age; 29 30 @Override 31 public String toString() { 32 return "Person [name=" + name + ", age=" + age + "]"; 33 } 34 } 35 }
运行结果:
2.FastJson解析
FastJson可以解析四种类型的JSON字符串:
1. JavaBean
Person person = JSON.parseObject(jsonString, Person.class);
2. List<JavaBean>
List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
3. List<String>
List<String> listString = JSON.parseArray(jsonString, String.class);
4. List<Map<String,Object>>
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
示例1:
1 package com.leijia.fastjsondemo; 2 3 import com.alibaba.fastjson.JSON; 4 5 public class Main { 6 public static void main(String[] args) { 7 String jsonStr = "{name:‘Tom‘,age:‘23‘}"; 8 Student student = JSON.parseObject(jsonStr,Student.class); 9 System.out.println("student:"+student); 10 } 11 private static class Student{ 12 String name; 13 String age; 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 public String getAge() { 24 return age; 25 } 26 27 public void setAge(String age) { 28 this.age = age; 29 } 30 31 @Override 32 public String toString() { 33 return "Student [name=" + name + ", age=" + age + "]"; 34 } 35 } 36 }
FastJson不仅可以解析Json字符串,同时也可以将对象转换为JSON字符串。
未完,待续。
标签:
原文地址:http://www.cnblogs.com/enjoy-coding/p/4816098.html