您的位置:首页 > 移动开发 > Android开发

Android中Gson解析详解json3

2016-02-02 17:43 627 查看
<span style="font-size:18px;">package com.example.androidgson02;

import java.util.List;

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

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1= (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//				生成json数据
String objectrootStr=getdata2();
//				解析json数据,并存储到对象种,并从对象中打印
myJsonPrase(objectrootStr);

}
});

}

/**
* 生成json
* {"num":20,"root":[{"id":"1","name":"关羽","age":"10"},
*                   {"id":"2","name":"张飞","age":"20"}],
*          "phone":{"p1":"p1","p2":"p2"}}
*
*/
public  String getdata2(){

String  objectrootStr =null;
try {
JSONObject root = new JSONObject();
JSONArray array = new JSONArray();

JSONObject object1 = new JSONObject();
object1.put("id", "1");
object1.put("name", "关羽");
object1.put("age", "10");
array.put(object1);
JSONObject object2 = new JSONObject();
object2.put("id", "2");
object2.put("name", "张飞");
object2.put("age", "20");
array.put(object2);

root.put("num", 20);
root.put("root", array);
JSONObject object=new JSONObject();
object.put("p1", "p1");
object.put("p2", "p2");
root.put("phone", object);

//生成的json字符串
objectrootStr= root.toString();
// 打印json数据
Log.e("1", "json数据"+objectrootStr);
} catch (Exception e) {
e.printStackTrace();
}
return objectrootStr;

}
/**
* {"num":20,"root":[{"id":"1","name":"关羽","age":"10"},
*                   {"id":"2","name":"张飞","age":"20"}],
*          "phone":{"p1":"p1","p2":"p2"}}
* 对json数据进行解析
*/
private void myJsonPrase(String objectrootStr) {
//		  3句话,把json数据解析并存到jsonBean对象中
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<JsonBean>() {}.getType();
JsonBean jsonBean = gson.fromJson(objectrootStr, type);

//	               从 jsonBean对象中取出所有数据
String str=jsonBean.getNum();
Log.e("1", str);
List<MyObjBean> root=jsonBean.getRoot();
for (int i = 0; i < root.size(); i++) {
String id=root.get(i).getId();
String name=root.get(i).getName();
String age=root.get(i).getAge();
Log.e("1", id+","+name+","+age);

}
String p1=jsonBean.getPhone().getP1();
String p2=jsonBean.getPhone().getP2();
Log.e("1", p1);
Log.e("1", p2);

}

}
</span>

javabean:

<span style="font-size:18px;">package com.example.androidgson02;

import java.util.List;
/**json数据
* {"num":20,"root":[{"id":"1","name":"关羽","age":"10"},
*                    {"id":"2","name":"张飞","age":"20"}],
*                    "phone":{"p1":"p1","p2":"p2"}}
*json数据对应的javabean
*  很多时候大家都是不知道这个Bean是该怎么定义,这里面需要注意几点:
1、内部嵌套的类必须是static的,要不然解析会出错;
2、类里面的属性名必须跟Json字段里面的Key是一模一样的;
3、内部嵌套的用[]括起来的部分是一个List,所以定义为 public List<MyObj> root;,而只用{}嵌套的就定义为 public Phone phone,
具体的大家对照Json字符串看看就明白了,不明白的我们可以互相交流,本人也是开发新手!
*
*/
public class JsonBean {

private String num;
private List<MyObjBean> root;
private PhoneBean phone;

public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public List<MyObjBean> getRoot() {
return root;
}
public void setRoot(List<MyObjBean> root) {
this.root = root;
}
public PhoneBean getPhone() {
return phone;
}
public void setPhone(PhoneBean phone) {
this.phone = phone;
}

}
</span>


<span style="font-size:18px;">package com.example.androidgson02;

public class MyObjBean {
private String id;
private String name;
private String age;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}

}
</span>


<span style="font-size:18px;">package com.example.androidgson02;

public class PhoneBean {
private String p1;
private String p2;

public String getP1() {
return p1;
}
public void setP1(String p1) {
this.p1 = p1;
}
public String getP2() {
return p2;
}
public void setP2(String p2) {
this.p2 = p2;
}

}
</span>


gson解析需要一个架包,我上传好了,免积分下载地址

http://download.csdn.net/detail/zhaihaohao1/8247589
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: