• <摘录>Gson对Java嵌套对象和JSON字符串之间的转换


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


    Student

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


    Subject

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

    图片预览:

  • 相关阅读:
    ACCESS中默认值要填双引号
    错误一直找不到
    员工自行车的摆放处
    连接占线导致另一个hstmt
    去裕利面试
    路上又一见闻
    企业的形象
    骏泰面试感觉
    IE 标点符号输入不顺的原因
    C Primer Plus(十七)
  • 原文地址:https://www.cnblogs.com/hummersofdie/p/4287700.html
Copyright © 2020-2023  润新知