Android中JSON解析
JSON是JavaScript Object Notation的缩写,可见JSON来源于JavaScript。JSON数据是一系列键值对的集合。
JSON和XML的比较
JSON比XML体积小
JSON和JavaScript交互更加方便
JSON对数据的描述性没有XML好
JSON的速度要远远大于XML
JSON的解析要比XML的解析要方便
JSON已经被大多数开发人员所接受,在网络数据的传输当中应用非常广泛
下面的代码就是一个JSON:
[plain] {
"phone" : ["12345678", "87654321"], // 数组
"name" : "tianjiefeng", // 字符串
"age" : 100, // 数值
"address" : { "country" : "china", "province" : "jiangsu" }, // JSON对象
"married" : false // 布尔值
}
JSON是以key/value的形式存在的,key是Strng类型的,value的类型可以是一个数组,可以是一个字符串,可以是一个数值,也可以是一个布尔值,甚至可以是一个JSON对象
一、JSONObject的创建
我们先来看一个Demo,把上面的JSON对象创建出来,并且写入存储卡文件
既然要写入存储卡,那么就必须在AndroidManifest.xml中加入一下权限
[html]
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
接着在JSONCreateDemoActivity.java里面编写如下代码:
[java]
package com.tianjf;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
public class JSONCreateDemoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 不存在不操作
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
// 返回到程序的被调用出
return;
}
// 将JSON对象写入存储卡
writeJSONObjectToSdCard(createJSONObject());
}
// 创建以下的JSON对象
// {
// "phone" : ["12345678", "87654321"], // 数组
// "name" : "tianjiefeng", // 字符串
// "age" : 100, // 数值
// "address" : { "country" : "china", "province" : "jiangsu" }, // JSON对象
// "married" : false // 布尔值
// }
private JSONObject createJSONObject() {
// 最外层是{},也就是一个JSONObject对象
JSONObject person = new JSONObject();
try {
// 第1个value是[ ],也就是一个JSONArray对象
JSONArray phone = new JSONArray();
phone.put("12345678");
phone.put("87654321");
person.put("phone", phone);
// 第2个value一个字符串
person.put("name", "tianjiefeng");
// 第3个value一个字符串数值
person.put("age", 100);
// 第4个value一个JSONObject对象
JSONObject address = new JSONObject();
address.put("country", "china");
address.put("province", "jiangsu");
person.put("address", address);
// 第5个value一个布尔值
person.put("married", false);
} catch (JSONException e) {
e.printStackTrace();
}
return person;
}
/**
* 将JSON对象写入存储卡
*
* @param person
* @throws FileNotFoundException
*/
private void writeJSONObjectToSdCard(JSONObject person) {
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "json"
+ File.separator + "json.txt");
// 文件夹不存在的话,就创建文件夹
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
// 写入内存卡
PrintStream outputStream = null;
try {
outputStream = new PrintStream(new FileOutputStream(file));
outputStream.print(person.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
&nb
补充:移动开发 , Android ,