JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性。近几年来已经和XML一样成为C/S架构中广泛采用的数据格式。有关JSON的更多知识,请参考以下内容:http://json.org/json-zh.html

在服务器和客户端之间使用JSON数据格式进行通信,经常会涉及到JAVA对象和JSON字符串之间的转换。通常,我们可以使用一些JSON解析工具,例如:Gson,FastJson等。当然,我们也可以手动解析,只是会比较繁琐。

下面通过一个实例来介绍使用Gson来进行JAVA嵌套对象和JSON字符串之间的相互转换。

MainActivity

  1. package com.example.jsonsample;
  2. import java.util.ArrayList;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.widget.TextView;
  7. import com.example.jsonsample.data.Student;
  8. import com.example.jsonsample.data.Subject;
  9. import com.google.gson.Gson;
  10. public class MainActivity extends Activity {
  11. private TextView mTextView;
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. mTextView = (TextView)findViewById(R.id.MyTextView);
  17. Gson gson = new Gson();
  18. //创建一个学生对象
  19. Student originStudent = getStudent();
  20. //将学生对象转换成JSON串
  21. String reponse = gson.toJson(originStudent);
  22. //将JSON串再还原成一个学生对象
  23. Student newstudent = gson.fromJson(reponse, Student.class);
  24. mTextView.setText(reponse);
  25. }
  26. public Student getStudent() {
  27. Subject sub1 = new Subject();
  28. sub1.setSubject_name("语文");
  29. sub1.setTeacher_name("张老师");
  30. Subject sub2 = new Subject();
  31. sub2.setSubject_name("数学");
  32. sub2.setTeacher_name("黄老师");
  33. Subject sub3 = new Subject();
  34. sub3.setSubject_name("英文");
  35. sub3.setTeacher_name("林老师");
  36. ArrayList<Subject> subjects = new ArrayList<Subject>();
  37. subjects.add(sub1);
  38. subjects.add(sub2);
  39. subjects.add(sub3);
  40. Student student = new Student();
  41. student.setName("杨辉");
  42. student.setSubjects(subjects);
  43. return student;
  44. }
  45. @Override
  46. public boolean onCreateOptionsMenu(Menu menu) {
  47. getMenuInflater().inflate(R.menu.activity_main, menu);
  48. return true;
  49. }
  50. }

Student

  1. package com.example.jsonsample.data;
  2. import java.io.Serializable;
  3. import java.util.ArrayList;
  4. /**
  5. * 学生类,包含学生名字和学科列表
  6. *
  7. * @author yanghui<yanghui1986527@gmail.com>
  8. */
  9. public class Student implements Serializable {
  10. /**
  11. * Serializable
  12. */
  13. private static final long serialVersionUID = -2689979321936117293L;
  14. private String name;
  15. private ArrayList<Subject> subjects;
  16. /**
  17. *
  18. * @return name 学生名字
  19. */
  20. public String getName() {
  21. return name;
  22. }
  23. /**
  24. *
  25. * @param name 学生名字
  26. */
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. /**
  31. *
  32. * @return subjects 学科列表
  33. */
  34. public ArrayList<Subject> getSubjects() {
  35. return subjects;
  36. }
  37. /**
  38. *
  39. * @param subjects 学科列表
  40. */
  41. public void setSubjects(ArrayList<Subject> subjects) {
  42. this.subjects = subjects;
  43. }
  44. }

Subject

  1. package com.example.jsonsample.data;
  2. import java.io.Serializable;
  3. /**
  4. * 学科类,包含学科名字和学科老师名字
  5. *
  6. * @author yanghui<yanghui1986527@gmail.com>
  7. */
  8. public class Subject implements Serializable{
  9. /**
  10. * serialVersionUID
  11. */
  12. private static final long serialVersionUID = -2574980011831897251L;
  13. private String subject_name;
  14. private String teacher_name;
  15. /**
  16. *
  17. * @return  subject_name 学科名称
  18. */
  19. public String getSubject_name() {
  20. return subject_name;
  21. }
  22. /**
  23. * @param  subject_name 学科名称
  24. */
  25. public void setSubject_name(String subject_name) {
  26. this.subject_name = subject_name;
  27. }
  28. /**
  29. *
  30. * @return  teacher_name 学科老师的名字
  31. */
  32. public String getTeacher_name() {
  33. return teacher_name;
  34. }
  35. /**
  36. *
  37. * @param teacher_name 学科老师的名字
  38. */
  39. public void setTeacher_name(String teacher_name) {
  40. this.teacher_name = teacher_name;
  41. }
  42. }

图片预览:

<摘录>Gson对Java嵌套对象和JSON字符串之间的转换的更多相关文章

  1. 使用Google的Gson实现对象和json字符串之间的转换

    使用Google的Gson实现对象和json字符串之间的转换 需要gson.jar 1.JsonUtil.java package com.snail.json; import java.lang.r ...

  2. json对象和json字符串之间的转换-JavaScript实现

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. Json对象和Json字符串之间的转换

    json字符串转json对象,调用parse方法: var b='{"name":"2323","sex":"afasdf&quo ...

  4. JSON对象与JSON字符串之间的转换

    JSON引用包:import net.sf.json 1.JSON字符串转JSON对象(例子中的AgencyExpand是java对象) JSONObject  json = JSONObject.f ...

  5. node.js JS对象和JSON字符串之间的转换

    JSON.stringify(obj)将JS对象转为字符串. var json = { aa: ['sdddssd'],   bb: [ '892394829342394792399', '23894 ...

  6. 前端页面使用 Json对象与Json字符串之间的互相转换

    前言 在前端页面很多时候都会用到Json这种格式的数据,最近没有前端,后端的我也要什么都要搞,对于Json对象与Json字符串之间的转换终于摸清楚了几种方式,归纳如下! 一:Json对象转换为json ...

  7. java对象与Json字符串之间的转化(fastjson)

    1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency> <groupId>com.alibaba</groupId> <art ...

  8. java对象与json字符串的互相转换

    java对象与json字符串的互相转换 1.采用 net.sf.json.JSONObject maven依赖包: <dependency> <groupId>net.sf.j ...

  9. java普通对象和json字符串的互转

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

随机推荐

  1. Spring源码解读Spring IOC原理

    一.什么是Ioc/DI? IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等. 先从我们自己设计这样一个视角来考虑: 所谓控制反转,就是把原先我们代码里面需要实现的对象创建.依赖的代码,反 ...

  2. Shp上传至Oracle Spatial

    1.下载shp2sdo,将shp文件拷贝至shp2sdo相同路径下,打开windows命令窗口,执行: shp2sdo shp文件名 表名 -i id -s 4326 -d 例如:shp2sdo ci ...

  3. Windows 和Linux 误删除后的恢复

    ext文件系统上删除文件,可以恢复:extundelete; windows 恢复删除文件: final data v2.0汉化版 和 easyrecovery

  4. Codefroces 735D Taxes(哥德巴赫猜想)

    题目链接:http://codeforces.com/problemset/problem/735/D 题目大意:给一个n,n可以被分解成n1+n2+n3+....nk(1=<k<=n). ...

  5. HDU 1285 确定比赛名次(拓扑排序模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意:有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行 ...

  6. JavaWeb知识回顾-Servlet常用类、接口及其方法

    今天主要把servlet的一些常用的类.接口和方法简单回顾一下. javax.servlet包 1.javax.servlet.Servlet接口 接口用于开发servlet,所有的servlet都要 ...

  7. 洛谷P1420 最长连号 题解

    题目传送门 这道题我是打暴力的...(尴尬) 所以直接是O(N2)的时间,但好像没有炸,数据很水... #include<bits/stdc++.h> using namespace st ...

  8. Jmeter-----保存到响应文件

    在jmeter中使用保存响应到文件 ------适用于非GUI模式执行脚本时,无法查看报错的信息. 1.添加组件: 2.各个配置项说明: 1.名称:即组件在整个测试计划中的名称显示,建议设置为用意义的 ...

  9. LR参数组取值操作方法

    LR参数组取值操作方法 奶奶的,每次都要重写一次,粘这里,以后备用.这个使用频率高. Action(){//定义一个变量int rNum; //关联参数组,前提是请求的页面中,存在参数组web_reg ...

  10. 遍历datatable的几种方法

    方法一: DataTable dt = dataSet.Tables[]; ; i < dt.Rows.Count ; i++) { string strName = dt.Rows[i][&q ...