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
相关文章推荐
- 关于Android的addview
- Android中Gson解析详解json2
- Android常用工具类
- Android中短信发送倒计时方法
- Android的生成日志文件
- Androidx学习笔记(43)--- 带断点续传的多线程下载(java项目)
- Androidx学习笔记(42)--- 多线程下载(java项目)
- Android--字符串和16进制相互转化(解决中文乱码)
- Android LayoutInflater详解
- Android MVP与MVC的区别和理解
- ViewPager滑动背景渐变效果
- 关于即时通讯中Android录音与ios录音的兼容问题
- Android的AlertDialog的6种使用情景
- 手机相册的基本使用
- android中Logcat的深层理解
- android事件传递
- 有效地分析Android内存--MAT工具解析
- 浅析一下androidstudido2.0官方模拟器
- Android应用性能优化之使用SparseArray替代HashMap
- Android 动态关闭Manifest中的Receiver的方法