android 学习之json数据的解析与创建

本文详细介绍了如何在Android项目中使用InputStreamReader和BufferedReader读取assets目录下的JSON文件,并通过JSONObject类进行解析,包括获取JSON对象的键值、遍历JSONArray数据,以及构建并操作JSON对象的基本步骤。

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

json数据格式已经是互联网数据通信的标准格式了,各种后端语言都支持json数据的处理,重要的是json格式具有轻便,灵活,语言清晰特点,android也完美的实现对json数据格式的解析;安卓下面对json数据格式解析有两种,JSONObject类实现和谷歌提供的Gson解析;这里以官方JSONObject来说明


现在项目assets目录下新建一个json文件,test.json

{
	"languages":[
	 	{"id":1,"ide":"Eclipse","name":"java"},
	 	{"id":2,"ide":"PhpStorm","name":"php"},
	 	{"id":3,"ide":"Visual Studio","name":"asp.net"}
	],
	"cat":"it"


}


回到MainActivity当中实现

package com.example.testjson;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import java.io.*;

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

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		
		try {
			InputStreamReader isr = new InputStreamReader(getAssets().open("test.json"),"UTF-8");
			
			BufferedReader br =new BufferedReader(isr);
			
			StringBuilder sb =new StringBuilder();
			String line="";
			
			while((line=br.readLine())!=null){
				sb.append(line);
			}
			
			try {
				JSONObject root =new JSONObject(sb.toString());
				String cat =root.getString("cat");
				System.out.println("cat键结果是:"+cat);
				
				JSONArray arr= root.getJSONArray("languages");
				for(int i=0;i<arr.length();i++){
					JSONObject obj =arr.getJSONObject(i);
					System.out.println("第个"+i+"对象,属性为:"+"id="+obj.getInt("id")+",ide="+obj.getString("ide")+",name="+obj.getString("name"));
				}
				
				
				JSONArray jarray = new JSONArray();
				JSONObject newobj =new JSONObject();
				
				JSONObject obj1 =new JSONObject();
				obj1.put("company", "韵达");
				obj1.put("praise", "很垃圾");
				obj1.put("star", 0);
				
				JSONObject obj2 =new JSONObject();
				obj2.put("company", "圆通");
				obj2.put("praise", "一般");
				obj2.put("star", 3);
				
				JSONObject obj3 =new JSONObject();
				obj3.put("company", "顺丰");
				obj3.put("praise", "速度很快!");
				obj3.put("star", 5);
				
				jarray.put(obj1);
				jarray.put(obj2);
				jarray.put(obj3);
				
				newobj.put("wuliu", jarray);
				newobj.put("theme", "物流");
				System.out.println("新构造的json对象为:"+newobj.toString());
				
			} catch (JSONException e) {
				e.printStackTrace();
			}
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值