android 中解析json格式数据

时间:2021-07-25 21:12:08

本文来自http://tonysun3544.iteye.com/category/188238

package com.tony.json;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

public class JsonActivity extends Activity {

/* Called when the activity is first created. /

private String jsonData = "[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]";
private Button jsonButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
jsonButton = (Button) findViewById(R.id.json_button);
jsonButton.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
JsonUtils jsonUtils = new JsonUtils();
jsonUtils.parseJson(jsonData);
}
});
}

}

这个类中主要是解析json数组:

Java代码 收藏代码

package com.tony.json;

import java.io.IOException;

import java.io.StringReader;

import android.util.Log;

import com.google.gson.stream.JsonReader;

public class JsonUtils {

private static final String TAG = “JsonUtils”;

public void parseJson(String jsonData){
JsonReader reader = new JsonReader(new StringReader(jsonData));
try {
reader.beginArray(); // 開始解析数组
while (reader.hasNext()) {
reader.beginObject(); // 開始解析对象
while (reader.hasNext()) {
String tagName = reader.nextName(); // 得到键值对中的key
if (tagName.equals("name")) { // key为name时
Log.i(TAG, "name--------->" + reader.nextString()); // 得到key中的内容
}else if (tagName.equals("age")) { // key为age时
Log.i(TAG, "age--------->" + reader.nextInt()); // 得到key中的内容
}
}
reader.endObject();
}
reader.endArray();
} catch (IOException e) {
e.printStackTrace();
}
}

}