Android Json解析

这篇博客展示了如何在Android应用中解析JSON数据。通过使用`JSONObject`和`JSONArray`,作者演示了从简单的JSON字符串到复杂JSON对象和数组的解析方法,并提供了读取本地JSON文件的示例。

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

package com.example.json;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

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

import android.content.res.AssetManager;
import android.test.AndroidTestCase;
import android.util.Log;

public class MyTest extends AndroidTestCase {

	public void testJson() {

		String s = "{\"name\":\"Android���\"}";

		try {
			JSONObject mJsonObject = new JSONObject(s);
			String bookName = mJsonObject.getString("name");
			Log.d("tag", "bookName :" + bookName);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void testJsonBook() {

		String s = "{\"book\":{\"id\":100,\"name\":\"Android���\"}}";

		try {
			JSONObject mJSONObject = new JSONObject(s);
			JSONObject JSONObjcet1 = mJSONObject.getJSONObject("book");
			int bookId = JSONObjcet1.getInt("id");
			String bookName = JSONObjcet1.getString("name");
			Log.d("tag", "bookName :" + bookName + ", bookId :" + bookId);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void testJsonArray() {

		String s = "[{\"book\":{\"id\":100,\"name\":\"Android���\"}},{\"book\":{\"id\":101,\"name\":\"Java���\"}}]";

		try {
			JSONArray mJSONArray = new JSONArray(s);
			int length = mJSONArray.length();
			for(int i=0;i<length;i++){
				
				JSONObject mJSONObject = mJSONArray.getJSONObject(i); 
				JSONObject jsonBook = mJSONObject.getJSONObject("book");
				int bookId = jsonBook.getInt("id");
				String bookName = jsonBook.getString("name");
				Log.d("testJsonArray", "bookName:"+bookName+",bookId:"+bookId);
			}
			
			
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public void testJsonObjectBooks() throws JSONException {
		AssetManager mAssetManager = getContext().getAssets();
		InputStream in = null;
		try {
			in = mAssetManager.open("json");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		String s = getStringFromInputStream(in);
		
		JSONObject mJSONObject = null;
		try {
			mJSONObject = new JSONObject(s);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JSONArray mJSONArray = mJSONObject.getJSONArray("books");
		int length = mJSONArray.length();
		for(int i=0;i<length;i++){
			
			JSONObject mJSONObject1 = mJSONArray.getJSONObject(i);
			JSONObject jsonBook = mJSONObject1.getJSONObject("book");
			String bookName = jsonBook.getString("name");
			int bookId = jsonBook.getInt("id");
			
			Log.e("testJsonObjectBooks", "bookName :" + bookName + ", bookId :" + bookId);
			
		}
		
	}
	public String getStringFromInputStream(InputStream in){
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		
		//StringBuilder 线程不安全 通常用在单线程中
		
		StringBuilder stringBuilder = new StringBuilder();
		String line = "";
		
		try {
			while((line = br.readLine()) !=null ){
				
				stringBuilder.append(line);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return stringBuilder.toString();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值