Android JSON解析库的使用

来源:互联网 发布:广告投放算法 编辑:程序博客网 时间:2024/06/08 03:26

一、Json:

首先回顾下JSON的基本概念,JSON是一种轻量级的数据交换格式。用于数据转换传输,通用与PHP、JAVA、C++、C#、Pyth等编程语言数据交换传输。

易于阅读和编写,同时也易于解析和生成。

基本结构:对象、数组。

二、Gson的简介和特点:

Gson是Google提供的用来在JAVA对象和JSON数据之间进行映射的JAVA类库。可将一根JSON字符串转成一个JAVA对象,或者反过来。

  • 快速、高效
  • 代码量少、简洁
  • 面向对象
  • 数据传递和解析方便
三、Fast-json简介和特点
1、Fastjson是一个性能很好的java语言实现的JSON解析器和生成器,来自于阿里巴巴的工程师开发。具有极快的性能,超越其他的Java Json Patser。
  • 快速FAST(比其他任何基于Java的解析器和生成器更快
  • 强大(支持普通的JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
  • 零依赖
  • 支持注解、支持全类型序列化。
2、基本用法:
  • 定义实体类
  • 根据需要可以将JSON生成单个实体或者列表实体集合
四、代码演示:

  • Gson 和 Fast-json 的实际应用案例

  • 效果:
package com.jike.jsondemo;import java.util.ArrayList;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.ListView;import com.alibaba.fastjson.JSON;import com.android.volley.Response;import com.android.volley.Response.Listener;import com.android.volley.VolleyError;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import com.jike.jsondemo.adapter.BookListAdapter;import com.jike.jsondemo.bean.Book;/** * Gson 和 Fast-json 的实际应用案例 *  * @author Administrator 图书列表 */public class MainActivity extends Activity {private String url = "http://apis.juhe.cn/goodbook/catalog?key=a2ac7f8df926e8d5d7cc978ca0f1b12b&dtype=json";private ListView lv;private BookListAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) this.findViewById(R.id.lv);getData();}private void getData() {StringRequest request = new StringRequest(url, new Listener<String>() {@Overridepublic void onResponse(String arg0) {Log.i("info", arg0);try {dealData(arg0);} catch (JSONException e) {e.printStackTrace();}}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError arg0) {}});Volley.newRequestQueue(getApplicationContext()).add(request);}private void dealData(String arg0) throws JSONException {/* * 使用GSON解析数据Gson gson = new Gson();Type listType = new TypeToken<ArrayList<Book>>() {}.getType();JSONObject object = new JSONObject(arg0);ArrayList<Book> books = gson.fromJson(object.getString("result"),listType);adapter = new BookListAdapter(this, books);lv.setAdapter(adapter); *//* * 使用FastJson解析数据 */JSONObject object = new JSONObject(arg0);ArrayList<Book> books = (ArrayList<Book>) JSON.parseArray(object.getString("result"), Book.class);adapter = new BookListAdapter(this, books);lv.setAdapter(adapter);}}
BookListAdapter.java:
package com.jike.jsondemo.adapter;import java.util.ArrayList;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.jike.jsondemo.R;import com.jike.jsondemo.bean.Book;public class BookListAdapter extends BaseAdapter {private Context c;private ArrayList<Book> list;public BookListAdapter(Context context, ArrayList<Book> books) {this.c = context;this.list = books;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = View.inflate(c, R.layout.item_list, null);holder = new ViewHolder();holder.tv = (TextView) convertView.findViewById(R.id.tv);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}Book b = list.get(position);holder.tv.setText(b.getCatlog() + "\n" + b.getId());return convertView;}class ViewHolder {TextView tv;}}
Book.java:
package com.jike.jsondemo.bean;public class Book {private String id;private String catlog;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getCatlog() {return catlog;}public void setCatlog(String catlog) {this.catlog = catlog;}}

0 0
原创粉丝点击