Android简单的JSON解析(一)

本文介绍了JSON数据格式的基本概念,包括两种数据形式,并与XML进行了对比。文章还提供了一个简单的JSON解析Demo,展示了如何将JSON数据转换为基本类型。

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

什么是JSON?

这是来自百度百科的扯淡:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快).

Json有两种数据格式.

一种是以(Key/Value)键值对应的形式的无序jsonObject对象,一个对象是以"{"为开始,“}”为结束,每个"key"后跟一个":"(冒号)   key/value之间用","(逗号)分隔,例如:

{"name":"myu",“addrs”:"beijing"},这就是一个简单的json对象,这种数据格式中的Key必须是string类型,value可以是string,array,number,object等类型.

第二种数据格式是有序的value集合,这种形式被称为jsonArray,里面的数组就是value的有序集合.一个数组以"["开始 "]"结束,值与值之间用","分隔.例如:

[1234,5678]


事实上,Json,XML,Html这三种数据格式一般为服务器返回的格式.就Json和XML而言:

相同点:1、两者的数据可读性基本相同
                 2、两者拥有同样丰富的解析手段
异同点:1、json的数据体积更小
        2、json与JS的交互更加方便
        3、json的解析速度更快
        4、xml对数据的描述性更好
        5、轻/重量级方面的区别:JSON只提供了整体解析方案,而这种方法只在解析较少的数据时才能起到良好效果;
        而XML提供了对大规模数据的逐步解析方案,这种方案很适用于对大量数据的处理。对于应用程序而言,只
        要整体数据可以一次性读取和写入的,都只能算是轻量级应用


Android中JSON几个常用的类:(来自Android官方文档API19)

JSONArray A dense indexed sequence of values. 
JSONObject A modifiable set of name/value mappings. 
JSONStringer Implements toString() and toString(). 
JSONTokener Parses a JSON (RFC 4627) encoded string into the corresponding object. 

每个类具体的作用及其中的方法大家可以先参考Google提供的文档,这里我们有时间再去详细分析


以下是自己写的一个小Demo,作用是解析一个简单的Json格式,并将其数据转化成基本类型:

package com.example.myjsondemo;

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

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

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		String json = "{" + "  \"query\": \"Pizza\", "
				+ "  \"locations\": [ 94043, 90210 ] " + "}";
		try {
			// 通过JSONTokener的nextValue()获得JSONObject对象
			JSONObject object = (JSONObject) new JSONTokener(json).nextValue();
			// 获取"query"键对应的value值
			String query = object.getString("query");
			Log.v("json", "-->query =" + query);
			// 返回索引对应的value值
			JSONArray locations = object.getJSONArray("locations");
			for (int i = 0; i < locations.length(); i++) {
				// 遍历JSONArray,取出Value值
				int id = locations.getInt(i);
				Log.v("json", "-->id =" + id);
			}
		} catch (Exception e) {
			// TODO: handle exception
			Log.v("json", "-->Exception Exception");
		}

	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值