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. 005_linux下logrotate 配置和理解

    对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以 ...

  2. 关于"轉淚點"与"轉捩點"

    经常看台湾偶像剧或台湾综艺节目的人,一定听过"转泪点"这个词,虽然我一直不知道这三个字具体是怎么写, 但其意思很容易明白,就是"转折点"的意思.今天无聊在看凤凰 ...

  3. C#串口serialPort操作

    现在大多数硬件设备均采用串口技术与计算机相连,因此串口的应用程序开发越来越普遍.例如,在计算机没有安装网卡的情况下,将本机上的一些信息数据 传输到另一台计算机上,那么利用串口通信就可以实现.运行本程序 ...

  4. 双系统卸载linux和装双系统的方法

    卸载linux系统: 因为本人装的是windows和Ubuntu,所以引导程序在linux系统里,linux系统可以引导windows系统,而Windows不能引导linux,所以需要修改引导程序,使 ...

  5. STL中stack/queue/map以及Boost unordered_map 的使用方法

    一.stackstack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型 ...

  6. css3 box-sizing属性值详解

    box-sizing属性可以为三个值之一:content-box(default),border-box,padding-box. content-box,border和padding不计算入widt ...

  7. ubuntu 防火墙关闭的80端口,开启方法

    #关闭防火墙 /etc/init.d/iptables stopservice iptables stop # 停止服务#查看防火墙信息/etc/init.d/iptables status #开放端 ...

  8. SpringBoot入门系列

    集合redis,mysql,测试例子 http://blog.csdn.net/lxhjh/article/details/51764604

  9. Android中xml tool属性

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2567.html 我是搬运工.. 总结而言tool属性就是为了在IDE ...

  10. `__pycache__` 是什么

    为了提高模块加载的速度,每个模块都会在 __pycache__ 文件夹中放置该模块的预编译模块,命名为 module.version.pyc, version 是模块的预编译版本编码,一般都包含 Py ...