`
ithinkfeed
  • 浏览: 93297 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android开发-Json解析

 
阅读更多

      Android开发过程中,数据传输是难免的,一般组织数据有两种方式:xml格式和json格式。两者解析都非常方便,而且解析工具也都很多,这里不多作比较。

      下面就Json格式的解析做一个比较实用的分析:

       1) 解析Json格式的数据

       2) 解析单个对象

       3) 解析对象的集合 

 

一 大前提--什么是Json ?

1.如果不知道什么是Json,先扫一下盲

1)JSON:JavaScript Object Notation

2)  JSON数据是一系列键值对的集合

3)官方网址:www.json.org, 去看看就什么都明白了

 

2.Json vs xml

1) JSON和XML可读性基本相同

2)JSON和XML通用拥有丰富的解析手段

3)JSON相对XML来讲体积更小

4)JSON与JavaScript的交互性更加方便

5) JSON对数据的描述性相对较差

 

二 Android 中的JSON解析工具

1.从API level 11 开始(也就是Android3.0),在android.util包下就有了JsonReader 和 JsonWriter两个帮助类,供我们来解析和使用json。

 

2.Android3.0以下系统的最佳的做法是使用Google的gson类库来解析,其实这也是3.0以后的做法,只是集成了进来,

下载地址:http://code.google.com/p/google-gson/downloads/list

 

3.下载后的jar文件导入到项目中,我相信这大家都会,下面的例子我采用的是gson来解析。

 

三 JSON实战

1. 解析json格式的数据

比如说有一个User对象,他有两个属性:name和age,当然实际情况可能有更多的属性,

那么用json格式表示就是:{name:"Ian", age: "20"},我相信你懂的。

1)自定义JSON帮助类--JsonUtils

Java代码  收藏代码
  1. public class JsonUtils {  
  2.       
  3.     public void parseJson(String jsonData) {  
  4.           
  5.         try {  
  6.             JsonReader reader = new JsonReader(new StringReader(jsonData));  
  7.             reader.beginArray();  
  8.             while (reader.hasNext()) {  
  9.                 reader.beginObject();  
  10.                 while(reader.hasNext()) {  
  11.                     String tagName = reader.nextName();  
  12.                     if(tagName.equals("name")) {  
  13.                         System.out.println("name--->" + reader.nextString());  
  14.                     } else if(tagName.equals("age")) {  
  15.                         System.out.println("age--->" + reader.nextString());  
  16.                     }  
  17.                 }  
  18.                 reader.endObject();  
  19.             }  
  20.             reader.endArray();  
  21.         } catch (IOException e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.           
  25.     }  
  26. }  
 

 

2) Activity代码

 

Java代码  收藏代码
  1. public class MainActivity extends Activity {  
  2.     private Button btnStart;  
  3.     private String jsonDataUser = "{\"name\":\"Ian\",\"age\":20}";  
  4.   
  5.   
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.main);  
  9.           
  10.         btnStart = (Button)findViewById(R.id.btnStart);  
  11.         btnStart.setOnClickListener(new BtnStartSetOnClickListener());  
  12.           
  13.           
  14.     }  
  15.       
  16.     private class BtnStartSetOnClickListener implements OnClickListener {  
  17.         @Override  
  18.         public void onClick(View v) {  
  19.             JsonUtils jsonUtils = new JsonUtils();  
  20.             jsonUtils.parseJson(jsonData);  
  21.         }  
  22.     }  
  23. }   

 就这么几行代码,在Console上就可以看到解析输出的信息了,是不是很简单呢?

 

 

2. 解析对象

1)上面解析的是字符串形式,如果我们定义一个User对象会怎么样呢?

 

Java代码  收藏代码
  1. public class User {  
  2.     private String name;  
  3.     private int age;  
  4.     public String getName() {  
  5.         return name;  
  6.     }  
  7.     public void setName(String name) {  
  8.         this.name = name;  
  9.     }  
  10.     public int getAge() {  
  11.         return age;  
  12.     }  
  13.     public void setAge(int age) {  
  14.         this.age = age;  
  15.     }  
  16. }  
 

2) 解析方法

 

Java代码  收藏代码
  1. public void parseUserFromJson(String jsonData) {  
  2.       
  3.     Gson gson =new Gson();  
  4.     User user = gson.fromJson(jsonData, User.class);  
  5.     System.out.println("name---------->" + user.getName());  
  6.     System.out.println("age---------->" + user.getAge());     
  7.       
  8. }  
 

是不是更简单了呢?

 

3. 解析集合

1)如果不是单个User,而是ArrayList<User>,那么该怎么解析啊,因为这个太常见了。

要解决这个问题,得先弄明白集合用json该怎么表示,简单来讲“{}”表示一个对象,“[]”表示一个集合,集合里面可以有多个对象,这样表示[{},{},{}]。OK,那么看实战代码,

json数据:

 

Java代码  收藏代码
  1. private String jsonDataUsers = "[{\"name\":\"Jack\",\"age\":20},{\"name\":\"Tom\",\"age\":22},{\"name\":\"Ian\",\"age\":20}]";  

 解析代码:

 

Java代码  收藏代码
  1. public void parseUserFromJson(String jsonData) {  
  2.   
  3.         Type typeList = new TypeToken<ArrayList<User>>(){}.getType();  
  4.         Gson gson = new Gson();  
  5.         LinkedList<User> users = gson.fromJson(jsonData, typeList);  
  6.         for(Iterator<User> iterator = users.iterator(); iterator.hasNext();) {  
  7.             User user = iterator.next();  
  8.             System.out.println("name---------->" + user.getName());  
  9.             System.out.println("age---------->" + user.getAge());  
  10.         }  
  11.     }  
 

我们可以看到,只是多了一行“Type typeList = new TypeToken<ArrayList<User>>(){}.getType();”,就可以解析出List来,然后迭代List就可以得到整个数据

了,真的很方便,还等什么呢,赶快试试看吧!

分享到:
评论

相关推荐

    Android开发-Json数据的生成与解析-完整Demo-AndroidStuidio

    Android开发-Json数据的生成与解析-完整Demo-AndroidStuidio http://blog.csdn.net/iwanghang Android开发-Json(一)Json数据的生成-完整Demo-AndroidStuidio Android开发-Json(二)Json数据的解析-完整Demo-Android...

    Android开发-Volley-解析Json使用方法-完整Demo-AndroidStudio

    Android开发-Volley-解析Json使用方法-完整Demo-AndroidStudio http://blog.csdn.net/iwanghang/article/details/52241233

    Android JSON获取 解析显示 附带Springboot -JSON服务器

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于与服务器进行数据交互。本教程将深入讲解如何在Android应用中获取、解析并显示JSON数据,同时结合Springboot构建JSON...

    java-json.jar.zip

    1. **Gson**:Google开发的Gson库可以将Java对象直接转换为JSON字符串,反之亦然。如果在Sqoop中遇到JSON数据,可能需要使用Gson将数据库中的JSON字符串反序列化为Java对象,以便进一步处理。 2. **Jackson**:另一...

    android_json所需jar包

    这个库提供了解析JSON字符串和构建JSON对象的方法,是Android开发中处理JSON不可或缺的一部分。在早期的Android版本中,开发者通常需要手动导入这个jar包,而现在的新版本Android Studio中,org.json库已被集成到...

    Android_JSON数据解析

    在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其简洁、易读、易编写的特点,被广泛应用于服务器与客户端之间的数据传输。本篇将详细讲解如何在Android应用中解析JSON数据,主要...

    老罗android视频开发源码和ppt--android 解析json

    1. 视频教程:这部分内容可能包括了罗老师讲解如何在Android中解析JSON的详细步骤,可能涵盖了使用Gson、org.json库、Jackson等不同的JSON解析库。视频可能会讲解如何创建JSON对象,解析JSON字符串到Java对象,以及...

    Android 安卓 json解析

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于应用程序与服务器之间的数据传输。本文将深入探讨如何在Android平台上进行JSON解析,无需依赖任何第三方库,只使用...

    Android json解析jar包

    在Java和Android开发中,解析JSON数据通常需要引入外部库,比如Gson,因为Android SDK本身并没有内置高级的JSON解析功能。 描述中的“挺方便的解析jar包”指的是这个jar包(Gson库)提供了简洁和高效的API,使得...

    google-json-2.8.2解析包及源码包

    Google JSON,也称为Gson,是Google开发的一个Java库,用于在Java对象和JSON数据之间进行映射。这个"google-json-2.8.2解析包及源码包"提供了Gson库的版本2.8.2,包含了必要的组件来支持JSON的序列化和反序列化操作...

    Android-Json东半球最快最好用的解析组件

    标题中的“Android-Json东半球最快最好用的解析组件”指的是一个专为Android平台设计的高性能、易用的JSON解析库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务与移动应用之间...

    Android-06-解析json数据

    在Android开发中,解析JSON数据是一项常见的任务,用于与服务器进行数据交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本篇将介绍三种在...

    google-json解析

    Google提供了自己的JSON库,旨在简化JSON解析和生成的过程,尤其在Java开发环境中,这个库为开发者提供了强大的支持。 Google JSON库,通常称为Gson,是Google官方推出的一个开源项目,它提供了一种优雅的方式来将...

    android-servlet-json-交互

    在Android开发中,与服务器进行数据交互是必不可少的环节,特别是在构建网络应用时。本教程主要探讨的是如何在Android客户端通过JSON格式与Java Servlet进行数据交换。JSON(JavaScript Object Notation)是一种轻量...

    Android-AndroidJSON格式化显示可配置样式展开与折叠

    总的来说,创建一个Android JSON查看器涉及JSON解析、UI设计、事件监听以及可配置样式等多个方面。通过理解和掌握这些知识点,开发者可以为用户提供更直观、易用的JSON数据查看体验。而借助开源库,可以极大地提高...

    android-http-get-json.7z

    在Android开发中,HTTP GET请求和JSON数据解析是两个核心概念。"android-http-get-json.7z"这个压缩包文件很可能包含了一个示例项目或教程,教导开发者如何在Android应用中通过HTTP GET方法获取服务器上的JSON数据,...

    Android高级应用源码-Android 解析json_dome.zip

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和编写数据。本资源“Android高级应用源码-Android 解析json_dome.zip”显然是一个关于如何在...

    android-post-json.7z

    在Android开发中,发送JSON数据通常涉及到网络请求,这是一项基础且重要的技能。"android-post-json.7z" 文件很可能包含了一个示例项目或者代码片段,用于演示如何在Android应用中通过POST方法发送JSON数据。这里...

    Android源码分享-JSON表单向导.rar

    总之,这份“Android源码分享-JSON表单向导.rar”涵盖了Android应用开发中处理JSON数据的关键知识点,包括JSON解析、网络请求、数据模型绑定以及UI交互等多个方面,对学习和提升Android开发技能大有裨益。

    老罗android视频开发源码和ppt---android 解析json

    理解并熟练掌握JSON解析对于Android开发者至关重要,因为许多API接口都以JSON格式返回数据。通过学习老罗的Android视频教程,开发者能更好地理解如何在实际项目中高效地解析和使用JSON数据,提升开发效率和应用性能...

Global site tag (gtag.js) - Google Analytics