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. pycharm双击无响应,打不开问题解决办法

    之前好好的pycharm,突然双击打不开了,怎么办? 亲测有效方案: 第一步:进入如下路径,找到cmd.exe,右键选择“以管理员身份运行”: 第二步:在打开的cmd窗口中,输入 netsh wins ...

  2. HttpURLConnection传json

    private static String sendToWangTing(DataRow dataRow) throws IOException{ String ip = Configuration. ...

  3. maven的初步理解

    [情景] 在进行JAVA项目开发的过程中,代码写好后,需要经过编译.打包.运行.测试.部署等过程. 在JAVA项目的开发阶段,就会根据业务的需要引入许多jar包来实现功能,但我们需求的jar包本身可能 ...

  4. 用dom4j操作xml文件

    XML的全称是eXtensible Markup Language,即“可扩展标记语言”.XML文件的作用主要是数据存储,文件配置,数据传输. html与xml的区别是:①html语法松散,xml语法 ...

  5. URL中斜杠/和反斜杠\的区别小结

    Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符. Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不 ...

  6. go当中寄生于变量的方法

    这个东东,好像其它语言很少见呢. 印象中,ruby是可以这样的. package main import ( "fmt" ) type user struct { name str ...

  7. day4迭代器&生成器&正则表达式

    一.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不能后退,不过这也没什么,因为人们很少在迭代途中后退.另外,迭代器的一大优点 ...

  8. int类中的方法(二)

        25.__pos__(self,*args,**kwargs) def __pos__(self, *args, **kwargs): # real signature unknown &qu ...

  9. [实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表

    写在前面 上篇文章实现了图片列表,这篇文章实现文档列表将轻车熟路,因为逻辑基本相似,只是查询条件的不同.这里将txt,doc,docx,ppt,pptx,xls,xlsx的文件都归为文档列表中. 系列 ...

  10. c# 递归异步获取本地驱动器下所有文件

    //获取所有驱动器 string[] drives = Environment.GetLogicalDrives(); foreach (string driver in drives) { Cons ...