Android Json解析
来源:互联网 发布:uc矩阵子系统划分例题 编辑:程序博客网 时间:2024/05/29 13:04
JSON(JavaScript Object Notation)是一种轻量级数据交换格式基本结构有对象(JsonObject)、数组(JsonArray)。
Gson是谷歌提供的一个面向对象用来可以快速高效在Java对象和JSON数据之间进行映射的java类库。可以将一个JSON字符串转成一个Java对象,也可以将一个Java对象转换成一个JSON字符串。
Fast-json是阿里巴巴工程师开发的一个性能很好的Java语言实现JSON解析器和生成器,性能极好,据说能超越其他任何的Java JSON解析器。特点是快,功能强大,支持jdk类的任意Javabean类,collection,map,date或enum。无依赖,支持注解和全类型序列化。
JSON简单语法:
{} 双括号表示对象
eg:{“name”: “Xiaoming”} 可以理解为是一个包含name为Xiaoming的对象
[] 中括号表示数组
eg:[{“course”: “Math”},{“course”: “IT”}]就表示包含两个对象的数组
“”双引号内是属性或值
传统的JSON解析
1、生成JSOn字符串
import org.json.JSONException;import org.json.JSONObject;public class JsonUtils { static JSONObject jsonObject = new JSONObject();//生成json对象 public static JSONObject addJsonObject(String key, Object value){ try { jsonObject.append(key, value); } catch (JSONException e) { e.printStackTrace(); }//通过键值对存放json数据 return jsonObject; } public static String createJsonString() { return jsonObject.toString();//返回json格式字符串 }}---------------------------------------------------------------public class Main { public static void main(String[] args) { JsonUtils.addJsonObject("name", "xiaohua"); JsonUtils.addJsonObject("name", "xiaoming"); JsonUtils.addJsonObject("name", "xiaojuan"); JsonUtils.addJsonObject("age", "20"); String jsonString=JsonUtils.createJsonString(); System.out.println("jsonString:"+jsonString); } }输出:--------------------------------------------------------------jsonString:{"age":["20"],"name":["xiaohua","xiaoming","xiaojuan"]}
2.解析JSON字符串
分为以下三种数据类型,JavaBean,List数组,嵌套Map的List数组:
public class Person {private int id;private String name;private String address;public int getId() { return id;}public void setId(int id) { this.id = id;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getAddress() { return address;}public void setAddress(String address) { this.address = address;}}------------------------------------------------------------import java.util.ArrayList;import java.util.List;import org.json.JSONArray;import org.json.JSONObject;/** * 完成对json数据的解析 * */public class JsonUtils { public static Person getPerson(String jsonString) { Person person = new Person(); try { JSONObject jsonObject = new JSONObject(jsonString); JSONObject personObject = jsonObject.getJSONObject("person"); person.setId(personObject.getInt("id")); person.setName(personObject.getString("name")); person.setAddress(personObject.getString("address")); } catch (Exception e) { // TODO: handle exception } return person; } public static List<Person> getPersons(String key, String jsonString) { List<Person> list = new ArrayList<Person>(); try { JSONObject jsonObject = new JSONObject(jsonString); // 返回json的数组 JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); Person person = new Person(); person.setId(jsonObject2.getInt("id")); person.setName(jsonObject2.getString("name")); person.setAddress(jsonObject2.getString("address")); list.add(person); } } catch (Exception e) { // TODO: handle exception } return list; } public static List<String> getList(String key, String jsonString) { List<String> list = new ArrayList<String>(); try { JSONObject jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { String msg = jsonArray.getString(i); list.add(msg); } } catch (Exception e) { // TODO: handle exception } return list; } }----------------------------------------------------------------import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { Person person = new Person(); String jsonString ="{\"person\":{\"id\":\"20\",\"name\":\"xiaohua\",\"address\":\"shenzhen\"}}"; person = JsonUtils.getPerson(jsonString); System.out.println("id:"+person.getId()); System.out.println("name:"+person.getName()); System.out.println("address:"+person.getAddress()); String jsonString1="{\"person\":[{\"id\":\"20\",\"name\":\"xiaohua\",\"address\":\"shenzhen\"},{\"id\":\"21\",\"name\":\"xiaoming\",\"address\":\"shanghai\"},{\"id\":\"22\",\"name\":\"xiaojuan\",\"address\":\"suzhou\"}]}"; List<Person> list = new ArrayList<Person>(); list=JsonUtils.getPersons("person", jsonString1); for(int i=0;i<list.size();i++){ person=list.get(i); System.out.println("id:"+person.getId()); System.out.println("name:"+person.getName()); System.out.println("address:"+person.getAddress()); } } }输出:-------------------------------------------------------------id:20name:xiaohuaaddress:shenzhenid:20name:xiaohuaaddress:shenzhenid:21name:xiaomingaddress:shanghaiid:22name:xiaojuanaddress:suzhou
使用GSON解析
Gson的基本用法:定义实体类,根据需要可以将json生成单个实体或列表实体集合。
1.生成json字符串
import com.google.gson.Gson;public class JsonUtils { public static String createJsonObject(Object obj) { Gson gson = new Gson(); String str = gson.toJson(obj); return str; }}----------------------------------------------------------------public class Main { public static void main(String[] args) { Person person = new Person(); person.setAddress("shenzhen"); person.setId(20); person.setName("xiaohua"); String jsonresult=JsonUtils.createJsonObject(person); System.out.println(jsonresult); } }输出结果:---------------------------------------------------------------{"id":20,"name":"xiaohua","address":"shenzhen"}
2.解析JSON
public class Person { Person(){ }private int id;private String name;private String address;public int getId() { return id;}public void setId(int id) { this.id = id;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getAddress() { return address;}public void setAddress(String address) { this.address = address;}}-------------------------------------------------------------------import java.util.ArrayList;import java.util.List;import org.json.JSONArray;import org.json.JSONObject;import com.google.gson.Gson;public class JsonUtils { public static <T> T getPerson(String jsonString, Class cls) { T t = null; try { Gson gson = new Gson(); t = (T) gson.fromJson(jsonString, cls); } catch (Exception e) { // TODO: handle exception } return t; } /** * 使用Gson进行解析 List */ public static <T>List<T> getPersons(String key, String jsonString, Class cls) { List<T> list = new ArrayList<T>(); T t = null; try { Gson gson = new Gson(); JSONObject jsonObject = new JSONObject(jsonString); // 返回json的数组 JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); t = (T) gson.fromJson(jsonObject2.toString(), cls); list.add(t); } } catch (Exception e) { } return list; }}--------------------------------------------------------------import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;import com.google.gson.Gson;public class Main { public static void main(String[] args) { Gson gson =new Gson(); Person person = new Person(); String jsonString ="{\"id\":\"20\",\"name\":\"xiaohua\",\"address\":\"shenzhen\"}"; person=gson.fromJson(jsonString, Person.class); System.out.println("id:"+person.getId()); System.out.println("name:"+person.getName()); System.out.println("address:"+person.getAddress()); String jsonString1="{\"person\":[{\"id\":\"20\",\"name\":\"xiaohua\",\"address\":\"shenzhen\"},{\"id\":\"21\",\"name\":\"xiaoming\",\"address\":\"shanghai\"},{\"id\":\"22\",\"name\":\"xiaojuan\",\"address\":\"suzhou\"}]}"; List<Person> list = new ArrayList<Person>(); list=JsonUtils.getPersons("person", jsonString1, Person.class); for(int i=0;i<list.size();i++){ person=list.get(i); System.out.println("id:"+person.getId()); System.out.println("name:"+person.getName()); System.out.println("address:"+person.getAddress()); } } }输出结果:---------------------------------------------------------------id:20name:xiaohuaaddress:shenzhenid:20name:xiaohuaaddress:shenzhenid:21name:xiaomingaddress:shanghaiid:22name:xiaojuanaddress:suzhou
使用FastJSon解析
public class Person { Person(){ }private int id;private String name;private String address;public int getId() { return id;}public void setId(int id) { this.id = id;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getAddress() { return address;}public void setAddress(String address) { this.address = address;}}-----------------------------------------------------------import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;public class JsonUtils { public static <T>T getPerson(String jsonstring, Class cls) { T t = null; try { t = (T) JSON.parseObject(jsonstring, cls); } catch (Exception e) { // TODO: handle exception } return t; } public static List getPersons(String jsonstring, Class cls) { List list = new ArrayList(); try { list = JSON.parseArray(jsonstring, cls); } catch (Exception e) { // TODO: handle exception } return list; }}-----------------------------------------------------------------import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;import com.google.gson.Gson;public class Main { public static void main(String[] args) { Gson gson =new Gson(); Person person = new Person(); String jsonString ="{\"id\":\"20\",\"name\":\"xiaohua\",\"address\":\"shenzhen\"}"; person=gson.fromJson(jsonString, Person.class); System.out.println("id:"+person.getId()); System.out.println("name:"+person.getName()); System.out.println("address:"+person.getAddress()); String jsonString1="[{\"id\":\"20\",\"name\":\"xiaohua\",\"address\":\"shenzhen\"},{\"id\":\"21\",\"name\":\"xiaoming\",\"address\":\"shanghai\"},{\"id\":\"22\",\"name\":\"xiaojuan\",\"address\":\"suzhou\"}]"; List<Person> list = new ArrayList<Person>(); list=JsonUtils.getPersons( jsonString1, Person.class); for(int i=0;i<list.size();i++){ person=list.get(i); System.out.println("id:"+person.getId()); System.out.println("name:"+person.getName()); System.out.println("address:"+person.getAddress()); } } }
JSON格式数据相对于XML格式的数据传输会更节省流量,传输效率更高。在这三种解析方式中FastJson是效率最高的,推荐使用。
- 【json】android json解析
- Android-Android解析JSON
- Android数据解析:Json解析
- android---Json数据解析
- Android Json 数据解析
- android 解析JSON
- android 解析json数据格式
- android 解析json数据格式
- Android 解析json数据格式
- android 解析json数据格式
- android 解析json数据格式
- Android的JSON解析
- Android 解析Json
- android JSON 解析
- Android 解析json数据格式
- android解析Json
- Android解析json数据
- Android Json解析
- 逻辑行计数
- android 5.0 zygote启动代码流程
- JavaScript 复选框全选和反选
- windows客户端性能测试之内存泄露检查工具umdh.exe
- boost仅运行一次的例程
- Android Json解析
- HDFS跨集群数据合并方案之ViewFileSystem
- 【算法】字符流中第一个不重复的字符
- HDU 1176 免费馅饼
- C++11 多线程编程---条件变量
- 使用sfnttool 精简ttf字体包大小
- 使用radiobutton实现底部导航栏
- SpringMVC整合TaskExecutor线程池的配置/使用
- java通过http协议与Freeswitch对接实现动态添加用户