- 浏览: 65973 次
- 性别:
- 来自: 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 2942Dialog是Android常用的对话框控件。AlertDia ... -
Android39_Clock和TimePicker
2011-11-14 00:08 2317一、AnalogClock和DigitalClock ... -
Android38_ImageView和Gallery
2011-11-14 00:07 3557一、ImageView使用方法 ImageVi ... -
Android36_Animations使用(四)
2011-11-08 00:14 3379一、LayoutAnimationsContrlller ... -
Android35_Animations使用(三)
2011-11-08 00:13 2609一、AnimationSet的具体使用方法 ... -
Android34_Animations使用(二)
2011-11-08 00:12 1919在代码中使用Animations可以很方便的调试、运行 ... -
Android33_Animations使用(一)
2011-11-08 00:12 2246一、Animations介绍 Anima ... -
Android31_AppWidget使用(二)
2011-11-05 00:09 2462一、PendingIntent介绍 PendingIn ... -
Android30_AppWidget使用(一)
2011-11-05 00:08 2226一、App Widget定义 App ... -
Android32_Notification用法
2011-11-05 00:09 1840Android系统的状态栏(Status Bar)中有一 ... -
Android29_SeekBar和RatingBar
2011-11-02 23:21 2065一、使用SeekBar步骤: SeekB ... -
Android28_ExpandableListActivity
2011-11-02 23:21 1455ExpandableListActivity就是可扩展的 ... -
Android27_AutoCompleteTextView
2011-11-02 23:21 1029一、创建AutoCompleteTextView ... -
Android26_DatePicker
2011-11-02 23:20 1746一、DatePicker和DatePickerDialo ... -
Android25_Spinner使用方法
2011-11-02 23:20 2772一、创建Spinner的步骤 1.在布局 ... -
Android24_Service初步
2011-10-18 22:27 965一、Service概念 ... -
Android23_Socket编程
2011-10-18 22:19 1467一、什么是Socket Socket是基 ... -
Android22_WIFI网络操作
2011-10-18 22:12 1651一、什么是WIFI WIFI就是一种无线 ... -
Android21_广播机制(二)
2011-10-18 22:00 964一、注册BroadcastReceiver的方法 ... -
Android20_广播机制(一)
2011-10-18 21:48 1047一、Android广播机制介绍 Android:操作系统 ...
相关推荐
Android_JSON数据解析 博客里面的Demo
Android中Json的数据解析博文源码。博文请关注:http://blog.csdn.net/yegongheng
Android 实用的数据json数据解析封装类,能快速解析任何形式json数据
android中的JSON数据解析库gson和fastjson,gson.jar和fastjson.jar是android中解析JSON数据非常好用的两个工具
android之json和gson数据解析最完整的代码例子(包括各种样式的json数据) 本人在2.3.3模拟器上已亲测可以运行。最适合学习json 或gson数据解析的初学者。
eclipse项目。获取raw文件下的json文件。无需编写json数据里面key值的实体类,动态获取里面的键值对的值。并在列表显示
老罗android 解析json数据源码
json解析 客户端用json读取服务器的数据
android网络解析数据,JSON解析数据的方法
Android 之 Json 数据解析 完整的json解析数据方法
自己写的json解析,不使用第三方的jar包,简单易懂,分为本地json解析和online json解析,网上的只需要修改一下url地址即可
Android 数据解析
最近在整理自己写过的一些应用,发现这个也许对大家有帮助,android通过http页面获取json标准格式数据并且解析其中对象的全过程,其中包含android连接http页面方法,android解析json格式数据方法,json标准化格式...
Android解析Json数据的PPT和源码
适合新手参考,简单实用,因为我也是新手,所以用的都是比较基础的方法实现。...okhttp方法获取服务器JSON数据或者获取本地android studio内的txt文本解析,然后显示在listview上,listview增加了上滑加载更多的功能
1. 例子代码有两部分:androidJson是andoird的工程,inxdex.php是php服务器json数据产生部分代码。 2. 服务器端提供http(get)获取方式获取json数据的api例子,是用php写的。 4. android的apk给你说完成http数据...
代码简单,逻辑清晰,对不同的JSON数据格式都进行了封装和解析,都采用函数方法,能够非常方便的使用
android json数据下载与解析demo,实现了http下载json服务器数据,并通过JsonObject解析json数据
在模块对应的包名下创建JSON数据对应的实体类WeatherInfo类,实体类中的成员名称要与JSON数组的key值一致,并为每个属性添加get和set方法。public String getTemp() {return temp;}public void setTemp(String temp)...
android框架解析JSON数据放入ListView的例子