package com.jsondemo;
public class Person {
public String name;
public int age;
}
package com.jsondemo;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.LinkedList;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import com.google.gson.reflect.TypeToken;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class JSONDemoActivity extends Activity {
private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;
private Button btn5;
private Button btn6;
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
btn4 = (Button) findViewById(R.id.btn4);
btn5 = (Button) findViewById(R.id.btn5);
btn6 = (Button) findViewById(R.id.btn6);
tv = (TextView) findViewById(R.id.tv);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 字符串 {"name":"张三","age":24}
// <name>张三<name>
// <age>24<age>
String jsonData = "{\"name\":\"张三\",\"age\":24}";// 需要使用\符号转义双引号
StringBuffer buffer = new StringBuffer();
try {// 解析对象按钮
JsonReader reader = new JsonReader(new StringReader(
jsonData));
reader.beginObject();
while (reader.hasNext()) {
String tag = reader.nextName();
if (tag.equals("name")) {
buffer.append("姓名:" + reader.nextString());
} else if (tag.equals("age")) {
buffer.append("年龄:" + reader.nextInt());
}
}
reader.endObject();
} catch (Exception e) {
e.printStackTrace();
}
tv.setText(buffer.toString());
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 解析数组型JSON
// 字符串 [{"name":"张三","age":24},{"name":"李四","age":27}]
// <name>张三<name>
// <age>24<age>
// <name>李四<name>
// <age>27<age>
String jsonData = "[{\"name\":\"张三\",\"age\":24},{\"name\":\"李四\",\"age\":27}]";// 需要使用\符号转义双引号
StringBuffer buffer = new StringBuffer();
try {// 解析数组按钮
JsonReader reader = new JsonReader(new StringReader(
jsonData));
reader.beginArray();
while (reader.hasNext()) {
reader.beginObject();
while (reader.hasNext()) {
String tag = reader.nextName();
if (tag.equals("name")) {
buffer.append("姓名:" + reader.nextString());
} else if (tag.equals("age")) {
buffer.append("年龄:" + reader.nextInt());
}
}
buffer.append("\n");
reader.endObject();
}
reader.endArray();
} catch (Exception e) {
e.printStackTrace();
}
tv.setText(buffer.toString());
}
});
// 谷歌提供
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// json对象转换成Java对象 其中Person是一个java类 包括name和age属性
String jsonData = "{\"name\":\"李明\",\"age\":24}";// 需要使用\符号转义双引号
Gson gson = new Gson();
Person p = gson.fromJson(jsonData, Person.class);
tv.setText("姓名" + p.name + "年龄" + p.age);
}
});
// 谷歌提供
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("");
// 将JSON数组解析为Java集合对象
String jsonData = "[{\"name\":\"张三\",\"age\":24},{\"name\":\"李四\",\"age\":27}]";// 需要使用\符号转义双引号
Gson gson = new Gson();
Type type = new TypeToken<LinkedList<Person>>() {
}.getType();
LinkedList<Person> lst = gson.fromJson(jsonData, type);
for (Person person : lst) {
tv.setText(tv.getText().toString() + "姓名" + person.name
+ "年龄" + person.age + "\n");
}
}
});
// javabean
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("");
Person p = new Person();
p.name = "小王";
p.age = 38;
Gson gson = new Gson();
String jsonData = gson.toJson(p, Person.class);
tv.setText(jsonData);
}
});
// javabean
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("");
Person p = new Person();
p.name = "小王";
p.age = 38;
Person p2 = new Person();
p2.name = "马云";
p2.age = 48;
LinkedList<Person> lst = new LinkedList<Person>();
lst.add(p);
lst.add(p2);
Type type = new TypeToken<LinkedList<Person>>() {
}.getType();
Gson gson = new Gson();
String jsonData = gson.toJson(lst, type);
Log.i("TAG", jsonData);
tv.setText(jsonData);
}
});
}
}
JSONDemo
最新推荐文章于 2023-09-06 15:25:00 发布