关于Json

  • Json:JavaScript Object Notation
  • Json数据是一系列的键值对集合,相对XML体积小
  • Json相对于XML解析方便一些,与JavaScript交互方便
  • 描述性相对XML较差

Json格式例子:

[{"name":"zhangsan","age":20},{"name":"lisi","age":21}]

Json介绍:http://baike.baidu.com/view/136475.htm

Json官网:http://www.json.org/

解析方法:

1、使用Android官方API :JsonReader (Added inAPI level 11

http://developer.android.com/reference/android/util/JsonReader.html

2、使用Google的Json解析插件:Gson (推荐)

http://code.google.com/p/google-gson/

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

  • 使用JsonReader解析,类似Android官方API
  • 使用Gson的API直接转对象或对象的列表

Gson使用例子代码:

Json解析工具类:

package com.wyy.json.util;import java.lang.reflect.Type;import java.util.List;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;/***************************************************************** *@ProjectName AboutJson *@FileName JsonUtil.java *@Author WYY *@Date 2013-6-14 *@Copyright 2012-2022  wyyft@163.com All rights reserved. * *****************************************************************//** * @Author WYY * @Description */public class JsonUtil{    private static JsonUtil  instance;    private Gson gson = new Gson();       /**     * @Description 获取JsonUtil的单例对象     * @modified by WYY 2013-6-14     * @return     */    public static JsonUtil newInstance()    {        if (instance == null)        {            instance = new JsonUtil();        }        return instance;    }    /**     * 解析单个对象     *      * @Description     * @modified by WYY 2013-6-14     * @param jsonData     * @return     */    public Person parsePerson(String jsonData)    {        Person person = gson.fromJson(jsonData, Person.class);        return person;    }    /**     * @Description 解析多个对象组成的数组     * @modified by WYY 2013-6-14     * @param jsonData     * @return     */    public List<Person> parsePersons(String jsonData)    {        Type type = new TypeToken<List<Person>>()        {        }.getType();        List<Person> ps = gson.fromJson(jsonData, type);        return ps;    }}
实体类Person:
/***************************************************************** *@ProjectName AboutJson *@FileName Person.java *@Author WYY *@Date 2013-6-14 *@Copyright 2012-2022  wyyft@163.com All rights reserved. * *****************************************************************/package com.wyy.json.util;/** * @Author WYY * @Description */public class Person{    private String name;    private int 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;    }    @Override    public String toString()    {        return "Person [name=" + name + ", age=" + age + "]";    }}
测试数据:
/***************************************************************** *@ProjectName AboutJson *@FileName JsonData.java *@Author WYY *@Date 2013-6-14 *@Copyright 2012-2022  wyyft@163.com All rights reserved. * *****************************************************************/package com.wyy.json.util;/** * @Author WYY * @Description  */public class JsonData{    //测试数据    static String jsonString1="{\"name\":\"zhangsan\",\"age\":20}";    static String jsonString2="[{\"name\":\"zhangsan\",\"age\":20},{\"name\":\"lisi\",\"age\":21}]";}
测试类:
/***************************************************************** *@ProjectName AboutJson *@FileName Tester.java *@Author WYY *@Date 2013-6-14 *@Copyright 2012-2022  wyyft@163.com All rights reserved. * *****************************************************************/package com.wyy.json.util;import java.util.List;/** * @Author WYY * @Description  */public class Tester{    public static void main(String[] args)    {        JsonUtil jsonUtil =JsonUtil.newInstance();        Person person =jsonUtil.parsePerson(JsonData.jsonString1);        System.out.println(person);                List<Person> psList = jsonUtil.parsePersons(JsonData.jsonString2);        System.out.println(psList);    }}

更多相关文章

  1. Android中Shared Preferences、Files、Network、SQLite数据库编
  2. Android下的BLE编程解析(一)
  3. Android(安卓)Handler 用法解析
  4. Android之JAVASe基础篇-面向对象-高级部分(四)
  5. Android安全机制解析与应用实践 Android安全模型
  6. Android开发--自定义颜色渐变的标题栏简单Demo
  7. Android资源管理中的Theme和Style-------之总述(一)
  8. android序列化笔记
  9. Android的Framework分析---4硬件抽象HAL

随机推荐

  1. Android(安卓)Studio Can not reslove *
  2. Android应用TranslateAnimation移动之后,
  3. ANDROID _EGL
  4. 修改Android手机的“虚拟机堆大小”和and
  5. Android电话秀实现(一)
  6. 无线调试指令
  7. FrameLayout布局绘制流程解析
  8. ava(Android)线程池
  9. Android四大组件【摘抄】
  10. Android官方技术文档翻译——IntelliJ 项