今天学习了Json数据解析,两种解析方式:
1.JsonReader数据解析
2.android系统的JSONObject和JSONArray类
第一种JsonReader:
package com.example.json;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
private String jsonData = "[{\"name\":\"Zhangsan\",\"age\":23},{\"name\":\"LiSi\",\"age\":43}]";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener {
public void onClick(View v) {
JsonUtils jsonUtils = new JsonUtils();
jsonUtils.Parsejson(jsonData);
}
}
}
package com.example.json;
import java.io.StringReader;
import android.annotation.SuppressLint;
import android.util.JsonReader;
public class JsonUtils {
@SuppressLint("NewApi")
public void Parsejson(String jsonData) {
try {
//新建jsonReader对象传入数据;
JsonReader reader = new JsonReader(new StringReader(jsonData));
//读取到数组对象开始解析
reader.beginArray();
//下一个数组对象是不是存在
while (reader.hasNext()) {
//读取对象
reader.beginObject();
//下一个对象是不是存在
while (reader.hasNext()) {
//读取键名
String tagName = reader.nextName();
//若名字为name输出语句,反之名字为age输出语句
if (tagName.equals("name")) {
System.out.println("name-->" + reader.nextString());
} else if (tagName.equals("age")) {
System.out.println("age-->" + reader.nextInt());
}
}
//读取对象结束
reader.endObject();
}
//读取数组对象结束
reader.endArray();
} catch(Exception e) {
e.printStackTrace();
}
}
}
全部代码:
package com.example.json;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
private String jsonData = "[{\"name\":\"Zhangsan\",\"age\":23},{\"name\":\"LiSi\",\"age\":43}]";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener {
public void onClick(View v) {
JsonUtils jsonUtils = new JsonUtils();
jsonUtils.Parsejson(jsonData);
}
}
}
package com.example.json;
import java.io.StringReader;
import android.annotation.SuppressLint;
import android.util.JsonReader;
public class JsonUtils {
@SuppressLint("NewApi")
public void Parsejson(String jsonData) {
try {
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while (reader.hasNext()) {
reader.beginObject();
while (reader.hasNext()) {
String tagName = reader.nextName();
if (tagName.equals("name")) {
System.out.println("name-->" + reader.nextString());
} else if (tagName.equals("age")) {
System.out.println("age-->" + reader.nextInt());
}
}
reader.endObject();
}
reader.endArray();
} catch(Exception e) {
e.printStackTrace();
}
}
}
第二种android系统的JSONObject和JSONArray类
package com.example.jsonreader;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
private String jsonData = "{\"students\":[{\"name\":\"Jack\",\"age\":12}, {\"name\":\"Vista\",\"age\":23}, {\"name\":\"Kaka\",\"age\":22}, {\"name\":\"Hony\",\"age\":31}]}";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener {
public void onClick(View v) {
JsonUtils jsonUtils = new JsonUtils();
jsonUtils.Parsejson(jsonData);
}
}
}
package com.example.jsonreader;
import org.json.JSONArray;
import org.json.JSONObject;
import android.annotation.SuppressLint;
public class JsonUtils {
@SuppressLint("NewApi")
public void Parsejson(String jsonData) {
try {
JSONObject jo = new JSONObject(jsonData);
JSONArray jsonArray = (JSONArray)jo.get("students");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject o = (JSONObject)jsonArray.get(i);
System.out.println("name-->" + o.getString("name") + "age-->" + o.getString("age"));
}
} catch(Exception e) {
e.printStackTrace();
}
}
}