您的位置:首页 > 移动开发 > Android开发

【Android】android-json生成与解析

2014-11-06 16:04 411 查看

JSON介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读性与快速编写的特性。它目前获得了大多数编程语言的支持,可以在不同平台间进行数据交换。相比于XML,它的数据体积要比XML小,编写比XML方便,传输速度比XML快很多。同时,他与JavaScript的交互更加方便。在Java中,通常使用json-lib(详情查看官网,在JAVA中使用JSON需要添加相关的jar文件,而android中自带了json-lib,只需要import
org.json.*即可使用)与Google的GSON对JSON进行操作。

JSON的数据格式

JSON通常是以包含在花括号内的键值对的形式表示的,如{"key":value};键值对中间用冒号(:)隔开,key只能是包含在双引号内的字符串,value可以是多种数据类型,比如String,number ,true, false,null, array等。
如果JSON中包含多个键值对,那么,可以用逗号(,)将多个键值对隔开,比如{"name":"hua","age":24,"Can speak Chinese":true}
JSON中的数组是用方括号([])括起来的,中间的各个元素还是用逗号(,)间隔,比如[{"name":"haha","age":12},{"name":"heihei","age":23}]

一个带数组的的JSON格式数据展示:

{"pet":[{"pettype":"cat","petname":"mimi","petid":1},{"pettype":"dog","petname":"leoou","petid":2},{"pettype":"mouse","petname":"mickey","petid":3}]}

Android使用JSON

1.创建一个Pet类用于作为传输的数据源

package com.example.jsontest;

public class Pet {
int petid;		//编号
String petname;	//名称
String pettype;	//类型

public Pet(){};

public Pet(int petid, String petname, String pettype){
this.petid = petid;
this.petname = petname;
this.pettype = pettype;
}

public int getPetid() {
return petid;
}
public void setPetid(int petid) {
this.petid = petid;
}
public String getPetname() {
return petname;
}
public void setPetname(String petname) {
this.petname = petname;
}
public String getPettype() {
return pettype;
}
public void setPettype(String pettype) {
this.pettype = pettype;
}

@Override
public String toString(){
return this.getPetid() + ":" + this.getPetname() + ":" + this.getPettype();
}
}


2.将Pet数组内的数据生成JSON格式的数据

private String petToJson(Pet[] p) {
String jsonResult = "";
JSONObject object = new JSONObject(); // 创建一个总的对象
JSONArray jsonarray = new JSONArray(); // 创建一个JSON数组
try {
for (int i = 0; i < p.length; ++i) {
JSONObject jsonObj = new JSONObject(); // Pet对象,json格式,每一个JSONObject待变一个pet
jsonObj.put("petid", p[i].getPetid());
jsonObj.put("petname", p[i].getPetname());
jsonObj.put("pettype", p[i].getPettype());
jsonarray.put(jsonObj);
}
object.put("pet", jsonarray);
jsonResult = object.toString();
temp = jsonResult;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return jsonResult;
}

3.将JSON格式的数据解析成Pet对象

private void jsonToPet(String json){
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray jsonArray = jsonObject.getJSONArray("pet");
for(int i= 0; i < jsonArray.length(); ++i){
JSONObject object = jsonArray.getJSONObject(i);
Pet p = new Pet();
p.setPetid(object.getInt("petid"));
p.setPetname(object.getString("petname"));
p.setPettype(object.getString("pettype"));
Log.e("Pet", p.toString());
}

} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息