- 浏览: 67697 次
- 性别:
- 来自: Mercury
最新评论
一、JSON介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
1.JSON数据是一系列键值对的集合;
2.JSON已经被大多数开发人员接受,在网络数据传输当中应用非常广泛;
3.JSON相对于XML解析方便一些。
JSON和XML对比:
1.JSON和XML的数据可读性基本相同;
2.JSON和XML同样拥有丰富的解析手段;
3.JSON相对于XML来讲,传递同等价值的信息时数据体积小;
4.JSON与JavaScript交换更加方便;
5.JSON对数据的描述性相对较差。
二、JSON数据格式特点
JSON数据格式例子:
[ { "name" : "allorry", "age" : 25 "address" : { "city" : "BeiJing", "postCode" : 123456 } }, { "name" : "bauble", "age" : 25 "address" : { "city" : "BeiJing", "postCode" : 123456 } } ]
{}代表了一个JSON对象,里面是一个个键值对,而[]代表了是一个JSON数组,里面是多个JSON对象。
三、使用Gson解析JSON数据
Android API中可以使用JsonReader进行JSON数据的解析,但是JsonReader是针对3.0版以上的SDK,所以并不适合现在使用。可以使用google的Gson进行JSON数据的解析。其实JsonReader就是将Google-gson添加到了Android SDK当中,只不过在3.0版本以下没有。使用方法和效果是一样的。Gson是自包含的,不依赖其他类库。
要想使用Google-gson需要下载gson的jar包:
http://code.google.com/p/google-gson/
例子程序:
首先需要在buildpath当中添加gson.jar。
JSONActivity.Java
package com.android.activity; import java.io.IOException; import java.io.StringReader; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.google.gson.stream.JsonReader; public class JSONActivity extends Activity { private Button button = null; private String jsonData = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); jsonData = "[{\"name\" : \"allorry\",\"age\" : 25} ,{\"name\" : \"bauble\",\"age\" : 25}]"; button = (Button)findViewById(R.id.button); button.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ public void onClick(View v) { try { parseJSON(jsonData); } catch (IOException e) { e.printStackTrace(); } } } public void parseJSON(String jsonData) throws IOException{ //如果需要解析JSON数据,要生成一个JsonReader对象 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.nextInt()); } } reader.endObject(); } reader.endArray(); } }
运行结果:
另外,使用Gson可以很方便的将json对象转换为我们自己定义的对象:
User.java
package com.android.activity; 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; } }
JSONActivity.java
package com.android.activity; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.google.gson.Gson; public class JSONActivity extends Activity { private Button button = null; private String jsonData = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); jsonData = "{\"name\" : \"allorry\",\"age\" : 25}"; button = (Button)findViewById(R.id.button); button.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ public void onClick(View v) { Gson gson = new Gson(); //得到对象,参数1:json数据对象,参数2:希望转换成的类对象 User user = gson.fromJson(jsonData, User.class); System.out.println("name - "+user.getName()); System.out.println("age - "+user.getAge()); } } }
输出结果:
如果想要JSON数组转换成多个的User对象,可以使用TypeToken:
private void parseUserFromJson(String jsonData){ Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Gson gson = new Gson(); LinkedList<User> userList = gson.fromJson(jsonData, listType); for(Iterator<User> i = userList.iterator();i.hasNext();){ User user = (User)i.next(); System.out.println("name - "+user.getName()); System.out.println("age - "+user.getAge()); } }
注意:此时jsonData传进来的是一个JSON数组。
发表评论
文章已被作者锁定,不允许评论。
-
Android40_Dialog
2011-11-14 00:11 2998Dialog是Android常用的对话框控件。AlertDia ... -
Android39_Clock和TimePicker
2011-11-14 00:08 2361一、AnalogClock和DigitalClock ... -
Android38_ImageView和Gallery
2011-11-14 00:07 3616一、ImageView使用方法 ImageVi ... -
Android36_Animations使用(四)
2011-11-08 00:14 3418一、LayoutAnimationsContrlller ... -
Android35_Animations使用(三)
2011-11-08 00:13 2652一、AnimationSet的具体使用方法 ... -
Android34_Animations使用(二)
2011-11-08 00:12 1961在代码中使用Animations可以很方便的调试、运行 ... -
Android33_Animations使用(一)
2011-11-08 00:12 2287一、Animations介绍 Anima ... -
Android31_AppWidget使用(二)
2011-11-05 00:09 2511一、PendingIntent介绍 PendingIn ... -
Android30_AppWidget使用(一)
2011-11-05 00:08 2262一、App Widget定义 App ... -
Android32_Notification用法
2011-11-05 00:09 1889Android系统的状态栏(Status Bar)中有一 ... -
Android29_SeekBar和RatingBar
2011-11-02 23:21 2120一、使用SeekBar步骤: SeekB ... -
Android28_ExpandableListActivity
2011-11-02 23:21 1489ExpandableListActivity就是可扩展的 ... -
Android27_AutoCompleteTextView
2011-11-02 23:21 1094一、创建AutoCompleteTextView ... -
Android26_DatePicker
2011-11-02 23:20 1783一、DatePicker和DatePickerDialo ... -
Android25_Spinner使用方法
2011-11-02 23:20 2817一、创建Spinner的步骤 1.在布局 ... -
Android24_Service初步
2011-10-18 22:27 1009一、Service概念 ... -
Android23_Socket编程
2011-10-18 22:19 1513一、什么是Socket Socket是基 ... -
Android22_WIFI网络操作
2011-10-18 22:12 1696一、什么是WIFI WIFI就是一种无线 ... -
Android21_广播机制(二)
2011-10-18 22:00 1007一、注册BroadcastReceiver的方法 ... -
Android20_广播机制(一)
2011-10-18 21:48 1077一、Android广播机制介绍 Android:操作系统 ...
相关推荐
本篇将详细讲解如何在Android应用中解析JSON数据,主要涉及以下几个方面: 1. JSON基本结构 JSON由两种基本结构构成:对象(Object)和数组(Array)。对象是以花括号 `{}` 包围的键值对集合,键用双引号括起,如`...
在Android中,我们通常使用`org.json`库来解析和生成JSON数据。例如,一个简单的JSON对象可能如下所示: ```json { "name": "John", "age": 30, "city": "New York" } ``` 在这个例子中,`name`、`age`和`city`...
本教程将深入探讨在Android中如何解析和处理JSON数据。 首先,我们需要理解JSON的基本结构。JSON是一种基于键值对的数据表示方式,主要由对象(Object)和数组(Array)构成。对象用花括号 `{}` 包裹,键值对以冒号...
5. **AsyncTask或线程管理**:由于Android主线程不支持耗时操作,解析JSON数据通常在后台线程进行,如使用`AsyncTask`或者`Thread`配合`Handler`。 6. **JSON解析**:解析JSON字符串,创建对应的Java对象,例如使用...
在Android开发中,数据解析是一项基础且重要的任务,它涉及到应用程序如何处理来自网络、本地存储或其他数据源的数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Android应用中,...
在提供的"Testjson"文件中,可能包含了一个示例JSON数据,你可以按照上述步骤进行解析和展示。实际开发中,还需要考虑错误处理,如网络请求失败、JSON解析异常等情况,以确保应用的健壮性。同时,随着Android发展,...
本篇文章将详细介绍如何创建一个实用的JSON数据解析封装类,以便快速有效地处理各种形式的JSON数据。 首先,我们需要引入一个JSON库,Android SDK本身包含了org.json库,但为了更强大的功能和更好的性能,推荐使用...
总的来说,Android中的JSON解析是通过选择合适的库,结合网络请求库,对获取的JSON数据进行解析,将其转换为可操作的Java对象,以便于在应用程序中使用。在处理过程中,还需要注意性能、错误处理和安全性等方面,以...
在Android开发中,有时我们需要从服务器获取JSON数据并解析它以展示在应用中。这个"android 动态解析获取json数据的键值对"的项目就是针对这种情况的一个实例,主要展示了如何在Eclipse环境下,不预先创建JSON键值...
本文将详细介绍如何在Android应用中使用JSON和Gson进行数据解析,并通过实际代码示例来演示各种类型的JSON数据处理。 一、JSON基础 1. JSON格式:JSON是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式...
本资料主要探讨了如何在Android环境中解析和生成JSON数据,特别提到了将JSON数据转换为Java对象的技术——json2java。 首先,了解JSON的基本结构至关重要。JSON基于JavaScript的一个子集,主要由键值对(key-value ...
总之,"android_json所需jar包"是Android开发中处理JSON数据所必需的依赖,它包含了解析和构造JSON对象的基本工具。随着Android版本和开发工具的更新,这些库可能已经内置,但理解其作用和使用方式对于任何Android...
综上所述,本教程涵盖了Android环境下JSON的服务器端和客户端实现,从数据解析到网络请求,以及具体的应用示例,为开发者提供了全面的参考。通过学习这些内容,你可以更好地理解和应用JSON在Android开发中的作用。
笔者近期做到对天气预报JSON数据解析,在此小记。 天气预报接口:http://wthrcdn.etouch.cn/weather_mini?citykey=101200101 JSON数据如下: { desc: OK, status: 1000, data: { wendu: 14, ganmao: 天气...
本教程将深入讲解如何在Android中对JSON数据进行封装和解析,以便于在应用程序中有效使用。 一、JSON基础知识 JSON是一种独立于语言的数据表示格式,它基于ECMAScript的一个子集。一个基本的JSON对象由键值对组成,...
对于本地JSON文件解析,首先我们需要读取JSON数据。在Android中,这通常通过`AssetManager`类完成,因为JSON文件常存放在`assets`目录下。 ```java try { AssetManager assetManager = getAssets(); InputStream ...
1. **解析JSON数据**:Android提供了`org.json`库,可以用来解析JSON字符串。`JSONObject`用于处理键值对,而`JSONArray`则用于处理数组。例如,你可以使用`new JSONObject(jsonString)`来创建一个JSONObject对象,...
在Android端,你需要使用`JSONObject`或`JSONArray`类来解析从服务器返回的JSON数据。Android SDK提供了`org.json`包,可以方便地进行JSON对象的创建、解析和操作。一旦解析完成,这些数据可以用于更新UI或者存储在...
本教程聚焦于老罗讲解的Android解析JSON数据的源码分析,这对于深入理解JSON处理以及优化应用程序性能至关重要。 首先,我们需要了解JSON的基本结构。JSON是一种基于键值对的格式,数据以键值对的形式存储,如{"key...
在Android开发中,JSON...总的来说,Android中的JSON数据解析是通过理解JSON结构,结合`org.json`库或Gson库,以及适当的网络请求库来实现的。合理使用这些工具,能有效地处理和展示从服务器获取的JSON数据。