1.简介

json是android与服务器通信过程中常用的数据格式,例如,如下是一个json格式的字符串:

  1. {"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","age":20},{"name":"stu1","id":"10001","age":21},{"name":"stu1","id":"10002","age":22}]}

2.android中常用的两个json库为:Gson和Jackson,一下就看一下它们是如何将对象转化为json字符串,以及如何将json字符串转化为java对象。

定义Student类:

  1. /*
  2. * $filename: Student.java,v $
  3. * $Date: 2014-5-12 $
  4. * Copyright (C) ZhengHaibo, Inc. All rights reserved.
  5. * This software is Made by Zhenghaibo.
  6. */
  7. package com.example.testjson;
  8. /*
  9. *@author: ZhengHaibo
  10. *web: http://blog.csdn.net/nuptboyzhb
  11. *mail: zhb931706659@126.com
  12. *2014-5-12 Nanjing,njupt,China
  13. */
  14. public class Student {
  15. private String name;
  16. private String id;
  17. private int age;
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public String getId() {
  25. return id;
  26. }
  27. public void setId(String id) {
  28. this.id = id;
  29. }
  30. public int getAge() {
  31. return age;
  32. }
  33. public void setAge(int age) {
  34. this.age = age;
  35. }
  36. }

定义School类:

  1. /*
  2. * $filename: School.java,v $
  3. * $Date: 2014-5-12 $
  4. * Copyright (C) ZhengHaibo, Inc. All rights reserved.
  5. * This software is Made by Zhenghaibo.
  6. */
  7. package com.example.testjson;
  8.  
  9. import java.util.List;
  10. /*
  11. *@author: ZhengHaibo
  12. *web: http://blog.csdn.net/nuptboyzhb
  13. *mail: zhb931706659@126.com
  14. *2014-5-12 Nanjing,njupt,China
  15. */
  16. public class School {
  17. private String name;
  18. private String address;
  19. List<Student> students;
  20. public String getName() {
  21. return name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. public String getAddress() {
  27. return address;
  28. }
  29. public void setAddress(String address) {
  30. this.address = address;
  31. }
  32. public List<Student> getStudents() {
  33. return students;
  34. }
  35. public void setStudents(List<Student> students) {
  36. this.students = students;
  37. }
  38. }

初始化一个School的java对象,待使用:

  1. private School initSchoolData(){
  2. School school = new School();
  3. school.setAddress("Nanjing");
  4. school.setName("NUPT");
  5. List<Student> list = new ArrayList<Student>();
  6. for(int i= 0;i<3;i++){
  7. Student student = new Student();
  8. student.setAge(20+i);
  9. student.setId("1000"+i);
  10. student.setName("stu"+1);
  11. list.add(student);
  12. }
  13. school.setStudents(list);
  14. return school;
  15. }

3.使用Gson,进行java对象与json字符串之间的相互转换

  1. private void testGson(){
  2. School school = initSchoolData();
  3. Gson gson = new Gson();
  4. //将对象转化为json字符串
  5. String jsonString = gson.toJson(school).toString();
  6. //打印
  7. System.out.println("GSON="+jsonString);
  8. /******分割线*****/
  9. //将字符串转化为JSON对象
  10. School resultSchool = gson.fromJson(jsonString, School.class);
  11. //打印
  12. System.out.println(resultSchool.getStudents().get(0).getName());
  13. }

可见,Gson是通过toJson和fromJson两个方法进行转换的,使用起来十分方便。

4.使用Jackson

  1. private void testJackson(){
  2. School school = initSchoolData();
  3. ObjectMapper objectMapper = new ObjectMapper();
  4. String jsonString = "";
  5. //将对象转化为Json字符串
  6. try {
  7. jsonString = objectMapper.writeValueAsString(school);
  8. System.out.println("Jackson="+jsonString);
  9. } catch (JsonProcessingException e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
  13. //将json字符串解析成java对象
  14. try {
  15. School resultSchool = objectMapper.readValue(jsonString, School.class);
  16. //打印
  17. System.out.println(resultSchool.getStudents().get(0).getName());
  18. } catch (JsonParseException e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. } catch (JsonMappingException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. } catch (IOException e) {
  25. // TODO Auto-generated catch block
  26. e.printStackTrace();
  27. }
  28. }

使用Jackson,主要是使用writeValueAsString和readValue这两个方法。此外,Jackson的writeValue和readValue有很多种参数类型,适用于多中场合。

注意:以上只是这两个工具类的基本用法,更多了解,参见官方文档。

Gson文档:  http://code.google.com/p/google-gson/

Jackson:  http://jackson.codehaus.org/

android:json解析的两个工具:Gson和Jackson的使用小例子的更多相关文章

  1. android:json解析的两个工具:Gson和Jackson的使用小样例

    1.简单介绍 json是android与server通信过程中经常使用的数据格式,比如.例如以下是一个json格式的字符串: {"address":"Nanjing&qu ...

  2. Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比

    介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...

  3. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  4. Android Json解析与总结

    一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  5. android json 解析简单实例

    Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...

  6. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】

    android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...

  7. Android JSON 解析关键代码

    Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...

  8. 【转】Android中通知的提示音、震动和LED灯效果小例子

    通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发出一条通知后,手机最上方 ...

  9. android json解析详细介绍之gson

    废话不多说,什么json是轻量级数据交换标准:自己百度去深入了解:这里有三种json解析工具.本人只用过其中两种:    1.Google Json利器之Gson   评价:简单,方便. 2.阿里巴巴 ...

随机推荐

  1. zoj 1295 Reverse Text

    Reverse Text Time Limit: 2 Seconds      Memory Limit: 65536 KB In most languages, text is written fr ...

  2. [luoguP3694] 邦邦的大合唱站队/签到题(状压DP)

    传送门 来自kkk的题解: 70分做法:枚举每个学校顺序,暴力. 100分:状压dp.从队列头到尾DP, 状态:f[i]表示i状态下最小的出列(不一致)的个数. 比如f[1101]表示从头到位为1/3 ...

  3. 【模板】prim的heap优化

    简单的代码.. 时间复杂度为O((n + m)logn) 大部分情况下还是跑不过kruskal的,慎用. #include <cstdio> #include <queue> ...

  4. [NOIP2002] 提高组P1032 字串变换

    题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...

  5. Codevs 1497 取余运算== 洛谷P 1226

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 输入b,p,k的值,编程计算bp mod k的值.其中的b,p,k*k ...

  6. isNaN+parseFloat进行统计以及对NaN的处理【JS验证数字】

    今天遇到这么一个需求: 对数据进行统计,可是在统计的时候parseFloat的时候出来一个NaN.后来用isNaN判断,如果是NaN,就给其设置一个初值. 先看对两个方法的解释 parseFloat: ...

  7. linux命令2——进程相关

    (1)ps  -ef :可以看到内核的线程.

  8. POJ 2346 【DP】

    题意: 给一个正的不大于10的偶数n,求n个数字组成的数字串前n/2位和后n/2位的和相等的个数. 思路: dp[i][j]由i位数组成的和为j的数字串的个数. dp[i][j]+=dp[i-1][j ...

  9. Oracle 用户表空间查看、修改大小、设置自增长等

      分类: Oracle 首先登入某个用户,查看某个用户在哪个表空间下: select username,default_tablespace from user_users; 查看该用户下所有的表: ...

  10. centos No module named setuptools解决方案

    wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz tar zxvf setuptool ...