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
- public class JsonUtils {
-
- public void parseJson(String jsonData) {
-
- try {
- JsonReader reader = new JsonReader(new StringReader(jsonData));
- reader.beginArray();
- while (reader.hasNext()) {
- reader.beginObject();
- while(reader.hasNext()) {
- String tagName = reader.nextName();
- if(tagName.equals("name")) {
- System.out.println("name--->" + reader.nextString());
- } else if(tagName.equals("age")) {
- System.out.println("age--->" + reader.nextString());
- }
- }
- reader.endObject();
- }
- reader.endArray();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
- }
2) Activity代码
- public class MainActivity extends Activity {
- private Button btnStart;
- private String jsonDataUser = "{\"name\":\"Ian\",\"age\":20}";
-
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- btnStart = (Button)findViewById(R.id.btnStart);
- btnStart.setOnClickListener(new BtnStartSetOnClickListener());
-
-
- }
-
- private class BtnStartSetOnClickListener implements OnClickListener {
- @Override
- public void onClick(View v) {
- JsonUtils jsonUtils = new JsonUtils();
- jsonUtils.parseJson(jsonData);
- }
- }
- }
就这么几行代码,在Console上就可以看到解析输出的信息了,是不是很简单呢?
2. 解析对象
1)上面解析的是字符串形式,如果我们定义一个User对象会怎么样呢?
- public class User {
- 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;
- }
- }
2) 解析方法
- public void parseUserFromJson(String jsonData) {
-
- Gson gson =new Gson();
- User user = gson.fromJson(jsonData, User.class);
- System.out.println("name---------->" + user.getName());
- System.out.println("age---------->" + user.getAge());
-
- }
是不是更简单了呢?
3. 解析集合
1)如果不是单个User,而是ArrayList<User>,那么该怎么解析啊,因为这个太常见了。
要解决这个问题,得先弄明白集合用json该怎么表示,简单来讲“{}”表示一个对象,“[]”表示一个集合,集合里面可以有多个对象,这样表示[{},{},{}]。OK,那么看实战代码,
json数据:
- private String jsonDataUsers = "[{\"name\":\"Jack\",\"age\":20},{\"name\":\"Tom\",\"age\":22},{\"name\":\"Ian\",\"age\":20}]";
解析代码:
- public void parseUserFromJson(String jsonData) {
-
- Type typeList = new TypeToken<ArrayList<User>>(){}.getType();
- Gson gson = new Gson();
- LinkedList<User> users = gson.fromJson(jsonData, typeList);
- for(Iterator<User> iterator = users.iterator(); iterator.hasNext();) {
- User user = iterator.next();
- System.out.println("name---------->" + user.getName());
- System.out.println("age---------->" + user.getAge());
- }
- }
我们可以看到,只是多了一行“Type typeList = new TypeToken<ArrayList<User>>(){}.getType();”,就可以解析出List来,然后迭代List就可以得到整个数据
了,真的很方便,还等什么呢,赶快试试看吧!
分享到:
相关推荐
Android开发-Json数据的生成与解析-完整Demo-AndroidStuidio http://blog.csdn.net/iwanghang Android开发-Json(一)Json数据的生成-完整Demo-AndroidStuidio Android开发-Json(二)Json数据的解析-完整Demo-Android...
Android开发-Volley-解析Json使用方法-完整Demo-AndroidStudio http://blog.csdn.net/iwanghang/article/details/52241233
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于与服务器进行数据交互。本教程将深入讲解如何在Android应用中获取、解析并显示JSON数据,同时结合Springboot构建JSON...
1. **Gson**:Google开发的Gson库可以将Java对象直接转换为JSON字符串,反之亦然。如果在Sqoop中遇到JSON数据,可能需要使用Gson将数据库中的JSON字符串反序列化为Java对象,以便进一步处理。 2. **Jackson**:另一...
这个库提供了解析JSON字符串和构建JSON对象的方法,是Android开发中处理JSON不可或缺的一部分。在早期的Android版本中,开发者通常需要手动导入这个jar包,而现在的新版本Android Studio中,org.json库已被集成到...
在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其简洁、易读、易编写的特点,被广泛应用于服务器与客户端之间的数据传输。本篇将详细讲解如何在Android应用中解析JSON数据,主要...
1. 视频教程:这部分内容可能包括了罗老师讲解如何在Android中解析JSON的详细步骤,可能涵盖了使用Gson、org.json库、Jackson等不同的JSON解析库。视频可能会讲解如何创建JSON对象,解析JSON字符串到Java对象,以及...
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于应用程序与服务器之间的数据传输。本文将深入探讨如何在Android平台上进行JSON解析,无需依赖任何第三方库,只使用...
在Java和Android开发中,解析JSON数据通常需要引入外部库,比如Gson,因为Android SDK本身并没有内置高级的JSON解析功能。 描述中的“挺方便的解析jar包”指的是这个jar包(Gson库)提供了简洁和高效的API,使得...
Google JSON,也称为Gson,是Google开发的一个Java库,用于在Java对象和JSON数据之间进行映射。这个"google-json-2.8.2解析包及源码包"提供了Gson库的版本2.8.2,包含了必要的组件来支持JSON的序列化和反序列化操作...
标题中的“Android-Json东半球最快最好用的解析组件”指的是一个专为Android平台设计的高性能、易用的JSON解析库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务与移动应用之间...
在Android开发中,解析JSON数据是一项常见的任务,用于与服务器进行数据交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本篇将介绍三种在...
Google提供了自己的JSON库,旨在简化JSON解析和生成的过程,尤其在Java开发环境中,这个库为开发者提供了强大的支持。 Google JSON库,通常称为Gson,是Google官方推出的一个开源项目,它提供了一种优雅的方式来将...
在Android开发中,与服务器进行数据交互是必不可少的环节,特别是在构建网络应用时。本教程主要探讨的是如何在Android客户端通过JSON格式与Java Servlet进行数据交换。JSON(JavaScript Object Notation)是一种轻量...
总的来说,创建一个Android JSON查看器涉及JSON解析、UI设计、事件监听以及可配置样式等多个方面。通过理解和掌握这些知识点,开发者可以为用户提供更直观、易用的JSON数据查看体验。而借助开源库,可以极大地提高...
在Android开发中,HTTP GET请求和JSON数据解析是两个核心概念。"android-http-get-json.7z"这个压缩包文件很可能包含了一个示例项目或教程,教导开发者如何在Android应用中通过HTTP GET方法获取服务器上的JSON数据,...
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和编写数据。本资源“Android高级应用源码-Android 解析json_dome.zip”显然是一个关于如何在...
在Android开发中,发送JSON数据通常涉及到网络请求,这是一项基础且重要的技能。"android-post-json.7z" 文件很可能包含了一个示例项目或者代码片段,用于演示如何在Android应用中通过POST方法发送JSON数据。这里...
总之,这份“Android源码分享-JSON表单向导.rar”涵盖了Android应用开发中处理JSON数据的关键知识点,包括JSON解析、网络请求、数据模型绑定以及UI交互等多个方面,对学习和提升Android开发技能大有裨益。
理解并熟练掌握JSON解析对于Android开发者至关重要,因为许多API接口都以JSON格式返回数据。通过学习老罗的Android视频教程,开发者能更好地理解如何在实际项目中高效地解析和使用JSON数据,提升开发效率和应用性能...