【Android】android-json生成与解析

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();
		}
		
	}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值