Java 用gson生成json数据

来自:http://www.imooc.com/learn/304
我们利用Google 提供的gson包生成如下格式的json数据:

{
    "result": 1,
    "personData": [
        {
            "name": "Tom Green",
            "age": 22,
            "url": "https://img.alicdn.com/imgextra/i2/2578685019/TB21XA7iXXXXXbxXpXXXXXXXXXX_!!2578685019.jpg",
            "schoolInfo": [
                {
                    "school_name": "Cambridge"
                },
                {
                    "school_name": "Oxford"
                }
            ]
        },
        {
            "name": "Bill Gates",
            "age": 66,
            "url": "https://img.alicdn.com/tps/TB1PebaLXXXXXX3XpXXXXXXXXXX-990-500.jpg",
            "schoolInfo": [
                {
                    "school_name": "北京大学"
                },
                {
                    "school_name": "清华大学"
                }
            ]
        }
    ]
}

Google gson地址:https://github.com/google/gson,将jar包下载后导入到java工程中即可。我们来分析一下上述json数据,包括两个元素,第一个是result,int型数据,第二个元素是personData,是一个对象(假设是Person对象)的集合,其中这个Person对象又包含了一个schoolInfo对象的集合。每个schoolInfo对象中只包含了一个school_name属性。下面新建一个Java工程进行上述json数据的生成。
1 SchoolInfo.java

package www.imooc.com;

public class SchoolInfo {
    private String school_name;

    public String getSchool_name() {
        return school_name;
    }

    public void setSchool_name(String school_name) {
        this.school_name = school_name;
    }
}

Person.java

package www.imooc.com;

import java.util.List;

public class Person {
    private String name;
    private int age;
    private String url;
    private List<SchoolInfo> schoolInfo;//SchoolInfo是一个SchoolInfo对象的集合
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public List<SchoolInfo> getSchoolInfo() {
        return schoolInfo;
    }
    public void setSchoolInfo(List<SchoolInfo> schoolInfo) {
        this.schoolInfo = schoolInfo;
    }       
}

Result.java

package www.imooc.com;

import java.util.List;


/*
 * Result包括一个int类型数据,一个Person类对象的集合
 * */

public class Result {
    private int result;
    private List<Person> personData;
    public int getResult() {
        return result;
    }
    public void setResult(int result) {
        this.result = result;
    }
    public List<Person> getPersonData() {
        return personData;
    }
    public void setPersonData(List<Person> personData) {
        this.personData = personData;
    }


}

2 新建TestJson.java,生成json

package www.imooc.com;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class TestJson {

    public static void main(String[] args) {
        //设置result的数据,包括一个int数据和一个Person对象的集合
        Result result = new Result();
        result.setResult(1);
        List<Person> listPersons = new ArrayList<Person>();
        //设置result类中的第一个Person对象,包括name,age,url和一个SchoolInfo对象的集合       
        Person person1 = new Person();
        person1.setName("Tom Green");
        person1.setAge(22);
        person1.setUrl("https://img.alicdn.com/imgextra/i2/2578685019/TB21XA7iXXXXXbxXpXXXXXXXXXX_!!2578685019.jpg");
        //设置Person类中的SchoolInfo,包括一个school_name
        List<SchoolInfo> listSchoolInfo1 = new ArrayList<SchoolInfo>(); 
        SchoolInfo schoolInfo1 = new SchoolInfo();
        schoolInfo1.setSchool_name("Cambridge");
        SchoolInfo schoolInfo2 = new SchoolInfo();
        schoolInfo2.setSchool_name("Oxford");       
        listSchoolInfo1.add(schoolInfo1);
        listSchoolInfo1.add(schoolInfo2);                           
        person1.setSchoolInfo(listSchoolInfo1);//将SchoolInfo的对象集合添加到Person中
        //设置result类中的第二个Person对象,包括name,age,url和一个SchoolInfo对象的集合       
        Person person2 = new Person();
        person2.setName("Bill Gates");
        person2.setAge(66);
        person2.setUrl("https://img.alicdn.com/tps/TB1PebaLXXXXXX3XpXXXXXXXXXX-990-500.jpg");
        //设置Person类中的SchoolInfo,包括一个school_name
        List<SchoolInfo> listSchoolInfo2 = new ArrayList<SchoolInfo>(); 
        SchoolInfo schoolInfo3 = new SchoolInfo();
        schoolInfo3.setSchool_name("北京大学");
        SchoolInfo schoolInfo4 = new SchoolInfo();
        schoolInfo4.setSchool_name("清华大学");     
        listSchoolInfo2.add(schoolInfo3);
        listSchoolInfo2.add(schoolInfo4);                           
        person2.setSchoolInfo(listSchoolInfo2);//将SchoolInfo的对象集合添加到Person中

        listPersons.add(person1);//将Person对象的集合添加到Result中
        listPersons.add(person2);//将Person对象的集合添加到Result中   
        result.setPersonData(listPersons);

        Gson gson = new Gson();
        System.out.println(gson.toJson(result));//将上述设置的代码转为json
    }

}
  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值