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常用函数简单介绍

    mmap函数简介: mmap函数是unix/linux下的系统调用,来看<Unix Netword programming>卷二12.2节对mmap的介绍: The mmap functi ...

  2. springboot使用fastJson作为json解析框架

    springboot使用fastJson作为json解析框架 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 〇.搭建spri ...

  3. C/C++——库函数strcpy和strdup比较

    版权声明:原创文章,禁止转载. 1. strcpy 原型: extern char *strcpy(char *dest,char *src); 用法: #include <string.h&g ...

  4. html基础-css-选择器

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. java网络编程三次握手四次挥手

    第一次握手:client设置syn=1,随机产生一个序列号seq=x,将数据包发送到server.client进入syn_send状态, 等待server确认. 第二次握手:server查看clien ...

  6. Jinja2 及 render_template 的深度用法

    是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...

  7. MariaDB配置远程访问权限

    首先配置允许访问的用户,采用授权的方式给用户权限 1 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRAN ...

  8. 三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法

    线性插值 先讲一下线性插值:已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值(反过来也是一样,略): y−y0x−x0=y1−y0x1−x ...

  9. 简易web server之python实现

    网络编程一项基本功是socket编程,包括TCP socket,UDP socket的客户端.服务器端编程. 应用层的各路协议如http,smtp,telnet,ftp等都依赖于传输层的TCP或者UD ...

  10. Eclipse的SVN插件与本地SVN客户端关联不上

    问题:当我们用SVN客户端把代码更新到本地,并导入到eclipse之后,却发现我们的SVN插件并没有起作用(没有代码入库.修改等小图标的显示,也没有check in,update等功能菜单).如果我们 ...