待解析的JSON格式的文件如下:

    [{"id":"5", "version":"1.0", "name":"xiaowang"},

    {"id":"10", "version":"2.0", "name":"lisi"}]

一、使用JSONObject来解析JSON数据

  官方提供的,所有不需要导入第三方jar包;直接上代码,如下:

  1. //方法一:使用JSONObject
  2. private void parseJSONWithJSONObject(String JsonData) {
  3. try
  4. {
  5. JSONArray jsonArray = new JSONArray(jsonData);
  6. for (int i=0; i < jsonArray.length(); i++) {
  7. JSONObject jsonObject = jsonArray.getJSONObject(i);
  8. String id = jsonObject.getString("id");
  9. String name = jsonObject.getString("name");
  10. String version = jsonObect.getString("version");
  11.  
  12. System.out.println("id" + id + ";name" + name + ";version" + version);
  13. }
  14. }
  15. catch (Exception e)
  16. {
  17. e.printStackTrace();
  18. }
  19. }

  步骤解读:

     定义一个JSON数组,用于将服务器返回的数据传入到一个JSONArray对象中; 然后循环遍历这个JSONArray,

   从中取出每一个元素(JSONObject对象),接下来只需调用getString()方法即可将数据取出。

二、使用GSON

  使用该方法解析JSON数据,首先需要添加GSON的jar包;下载地址是:http://download.csdn.net/detail/a924571572/5824225

    需要导入的jar包如图: 

  下面是核心代码:

  1. //方法二:使用GSON
  2. private void parseJSONWithGSON(String JsonData) {
  3. Gson gson = new Gson();
  4. List<App> applist = gson.fromJson(jsonData,
  5. new TypeToken<List<App>>() {}.getType());
  6. for(App app : applist) {
  7. System.out.println("id" + app.getId() + ";name" + app.getName() + ";version" + app.getVersion());
  8. }
  9. }

  步骤解读:

   根据JSON数据内容需要定义一个类,用存放数据,如App类:

  1. public class App {
  2. private String id;
  3. private String name;
  4. private String version;
  5.  
  6. public String getId() {
  7. return id;
  8. }
  9.  
  10. public void setId(String id) {
  11. this.id = id;
  12. }
  13.  
  14. //......
  15. }

     如只有一组数据,则可以直接调用如下代码     

  1. GSON gson = new GSON();
  2. App app = gson.fromJson(jsonData, App.class);

     如果有多组数据,则需要借助TypeToken将期望解析成的数据类型传入fromJson()方法中:

  1. List<App> app = gson.fromJson(jsonData, new TypeToken<<List<App>>> ().getType());

    之后直接使用App对象的方法,如:getId、getName....即可获取数据

  补充:

   TypeToken是什么呢?

    TypeToken的使用非常简单,如上面的代码,只要将需要获取类型的泛型类作为TypeToken的泛型参数构造一个匿名的子类,就可以通过getType()方法获取到我们使用的泛型类的泛型参数类型。

三、使用Jackson

  第三方的工具知道该怎么处理了吧,jar包的下载地址:http://wiki.fasterxml.com/JacksonDownload

    其中需要使用到:

      jackson-databind.jar   核心包(必须),提供基于“流模式”解析的API【JsonPaser(json流读取),JsonGenerator(json流输出)】

        jackson-annotations.jar   数据绑定包(可选),提供基于“对象绑定”和“树模型”相关API。【ObjectMapper,JsonNode(树节点)】

      jackson-core.jar  注解包(可选),提供注解功能。

   核心方法:

  1. public static void parseJSONWithJackson(String jsonData) {
  2. ObjectMapper mapper = new ObjectMapper();
  3. try {
  4. App app = mapper.readValue(jsonData, App.class);
  1.      System.out.println("id" + app.getId() + ";name" + app.getName() + ";version" + app.getVersion());
  1.   } catch (JsonParseException e) {
         e.printStackTrace();
      } catch (JsonMappingException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
       }
    }

四、使用Fastjson
  不多说,直接上jar包下载地址:http://download.csdn.net/download/finaljia/5293875

  核心代码:

  1. JSONArray jarr = JSONArray.parseArray(jsonData); //JSON.parseArray(jsonStr);
  2. for (Iterator iterator = jarr.iterator(); iterator.hasNext(); ) {
  3. JSONObject job = (JSONObject)iterator.next();
  4. String id = job.get("id").toString();
  5. String name = job.get("name").toString();
  6. String version = job.get("version").toString();
  7. System.out.println("id" + id + ";name" + name + ";version" + version);
  8. }

Android中解析JSON格式数据常见方法合集的更多相关文章

  1. Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  2. android 中解析json格式数据

    本文来自http://tonysun3544.iteye.com/category/188238 package com.tony.json; import android.app.Activity; ...

  3. 实现android上解析Json格式数据功能

    实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

  4. Android上解析Json格式数据

    package com.practice.json; import org.json.JSONArray; import org.json.JSONException; import org.json ...

  5. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  6. 解析json格式数据

    实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...

  7. 在JSP页面中输出JSON格式数据

    JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.html J ...

  8. $Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  9. 用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

随机推荐

  1. ACM-进阶之路

    ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l ...

  2. 线上问题:如何定位解决CPU高占有率

    (原文转自:http://www.blogjava.net/hankchen) 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用 ...

  3. [CC150] Get all permutations of a string

    Problem: Compute all permutations of a string of unique characters. 此题用循环的方式不好做,下面是一种递归的思路: 把给的字符串看成 ...

  4. Datadog Agent是啥?它消耗什么资源?

    在资本市场不那么喜人的 2015 年融资 9450 万美元的 Datadog,在运维圈刮起了一阵小旋风.作为国外很值得学习的一款平台监控产品,公司人数不足 100 的 Datadog 为什么吸引了投资 ...

  5. 实用make最佳实践

    http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2288055.html 一.前言 Make工具最主要也是最基本的功能就是通过makefile文 ...

  6. ****Objective-C 中的方法的调用

    oc语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或者方法调用. oc中方法的调用有两种: 第一种: [类名或对象名 方法名]; [ClassOrInstance method]; [C ...

  7. Linux下删除大量文件

    主要参考了http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux 首先建立50万个文件 ➜ test ...

  8. 关于方程x^2+y^2=p (p为素数)的解问题

    问题描述:对于方程,其中为素数,x,y为整数,且,输出符合条件的x,y. 分析:对于本方程,我们通过费马平方和定理知道,只有奇素数p满足这个条件时才有解. 那么当此方程有解时,解有几个呢?很明显不可能 ...

  9. C#日期格式精确到毫秒以及上下午

    有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2009-6-24 14:33:34 如果要换成成200906,06-2009,2009-6-24或更多的该怎么办呢 我们要用到:DateT ...

  10. USCAO3.26Sweet Butter(SPFA)

    最短路复杂度估计错误 以为SPFA是N*m的 用了dij超时 用SPFA直接跑就好了 O(k*e) K 一般为2,3: /* ID: shangca2 LANG: C++ TASK: butter * ...