android json解析及简单例子

本文详细介绍了如何使用Java解析JSON字符串的过程,包括定义JSONTokener、创建JSONObject和JSONArray对象,以及如何遍历和获取JSON数据的具体步骤。通过示例代码展示了如何解析JSON中的电话号码、姓名、年龄、地址(包括国家和省份)以及婚姻状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/aomandeshangxiao/article/details/7000077

假设有如下数据需要解析:

	private String strJson = 
	 "{" +  
	     "   \"phone\" : [\"12345678\", \"87654321\"]," +  
	     "   \"name\" : \"lau\"," +  
	     "   \"age\" : 100," +  
	     "   \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" }," +  
	     "   \"married\" : false" +  
	 "}";  

实现代码如下:

package com.lau.jsonparse;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class JsonParseDemoActivity extends Activity {
	
	private String strJson = 
	 "{" +  
	     "   \"phone\" : [\"12345678\", \"87654321\"]," +  
	     "   \"name\" : \"yuanzhifei89\"," +  
	     "   \"age\" : 100," +  
	     "   \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" }," +  
	     "   \"married\" : false" +  
	 "}";  

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        try {
        	JSONTokener jsonTokener = new JSONTokener(strJson);
			JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
			JSONArray jsonArray = jsonObject.getJSONArray("phone");
			for(int i=0; i<jsonArray.length(); i++) {
				Log.d("DEBUG", "" + jsonArray.getString(i));
			}
			Log.d("DEBUG", jsonObject.getString("name"));
			Log.d("DEBUG", "" + jsonObject.getInt("age"));
			JSONObject object = jsonObject.getJSONObject("address");
			Log.d("DEBUG", object.getString("country"));
			Log.d("DEBUG", object.getString("province"));
			Log.d("DEBUG", "" + jsonObject.getBoolean("married"));
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}
输出结果如下:

08-05 07:36:12.010: D/DEBUG(607): 12345678
08-05 07:36:12.010: D/DEBUG(607): 87654321
08-05 07:36:12.020: D/DEBUG(607): lau
08-05 07:36:12.020: D/DEBUG(607): 100
08-05 07:36:12.020: D/DEBUG(607): china
08-05 07:36:12.020: D/DEBUG(607): jiangsu
08-05 07:36:12.020: D/DEBUG(607): false




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值