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. Linux中查看CPU信息 (转)

    cat /proc/cpuinfo中的信息 processor       逻辑处理器的id. physical id    物理封装的处理器的id. core id        每个核心的id. ...

  2. 基于layui+cropper.js实现上传图片的裁剪功能

    最近因项目需求,需要在上传图片的时候先对图片裁剪,然后在上传,所以就有了本文的出现. 开始正文之前,要提一下这个图片的裁剪:图片的裁剪,有前端裁剪,也可以后端裁剪 前端的裁剪我知道的可以分为这么两种: ...

  3. oracle 12C安装问题

    1. 先弄好c$ share的问题  2. 测试一下 c$ share 是否成功. 方法是在cmd里打net use \\localhost\c$ 失败会是这样子...: 系统错误53  The ne ...

  4. 【PAT】1001. A+B Format (20)

    1001. A+B Format (20) Calculate a + b and output the sum in standard format -- that is, the digits m ...

  5. vim进阶-自己设置vim编辑器

    我这是最基础的一些vim设置,参考文章http://blog.csdn.net/huiguixian/article/details/6394095 看大牛设置的vim,感觉很花里胡哨,以后慢慢接触: ...

  6. c++ primer 6 语句

    没什么重要的东西,异常处理在17章再讲吧

  7. lr的脚本调试方法

    1)  设置调试断点(快捷键F9)当设置断点的脚本,脚本运行到断点处,自动停止运行,我们可以通过查看运行日志,来观察脚本执行的情况: LR中也能设置断点,具体菜单在:Insert - Toggle B ...

  8. LoadRunner 使用虚拟IP测试流程

    LoadRunner 使用虚拟IP测试流程 LoadRunner 使用IP欺骗的原因 . 当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量, ...

  9. JQuery 分割字符串

    JQuery 分割字符串 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  10. BOM知识整理

    1.窗口位置: 1-1.window,screenLeft获取窗口距离屏幕左边的距离 1-2.window.screenTop获取窗口距离屏幕顶端的距离 1-3.window.screenX和wind ...