JSON快速入门(Java版)--慕课网笔记

本文介绍了JSON的基础概念及其在Java中的应用,包括JSON的基本数据结构、处理方式及使用技巧,并对比了JSON与GSON库的功能特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1章 课程概述
1-1 JSON课程介绍

JSON是行业内使用最为广泛的数据传输格式

  • JSON基础知识
  • Java中两种常见的JSON处理方式
  • 综合运用
第2章 基础入门
2-1 什么是JSON

JSON是一种与开发语言无关的、轻量级的数据格式。全称是JavaScript Object Notation。

优点:易于人的阅读和编写,易于程序解析与生成

{
    "name": "JSON快速入门(Java版)",
    "author": "李广",
    "content": [
        "JSON基础入门",
        "常用JSON处理"
    ],
    "time": {
        "value": 30,
        "unit": "分钟"
    }
}
2-2 数据类型表示
  • 数据结构
    • Object
      使用花括号包含键值对结构,Key必须是String类型,value为任何基本类型或数据结构
    • Array
      使用中括号[]来起始,并用逗号,来分割元素。
  • 基本类型
    • String
    • number
    • true
    • false
    • null
2-3 JSON数据演示
{
    "name": "王小二",
    "age": 25.2,
    "birthday": "1990-01-01",
    "school": "蓝翔",
    "major": [
        "理发",
        "挖掘机"
    ],
    "has_girlfriend": false,
    "car": null,
    "house": null,
    "comment": "这是一个注释"
}
第3章 JSON in Java
3-1 JSON使用
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20090211</version>
    </dependency>
public class JsonObjectSample {

    public static void main(String[] args) {
        jSONObjectSample();
    }

//  {
//      "name": "王小二",
//      "age": 25.2,
//      "birthday": "1990-01-01",
//      "school": "蓝翔",
//      "major": [
//          "理发",
//          "挖掘机"
//      ],
//      "has_girlfriend": false,
//      "car": null,
//      "house": null,
//      "comment": "这是一个注释"
//  }

    private static void jSONObjectSample() {
         JSONObject wangxiaoer = new JSONObject();
         Object nullObject = null;
         try {
            wangxiaoer.put("name", "王小二");
             wangxiaoer.put("age", 25.2);
             wangxiaoer.put("birthday", "1990-01-01");
             wangxiaoer.put("school", "蓝翔");
             wangxiaoer.put("major", new String[] {"理发","挖掘机"});
             wangxiaoer.put("has_girlfriend", false);
             wangxiaoer.put("car", nullObject);
             wangxiaoer.put("house", nullObject);
             wangxiaoer.put("comment", "这是一个注释");
             System.out.println(wangxiaoer.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }


    }

}
3-2 使用Map 构建JSON
    private static void createJsonByMap() {
        Map<String,Object> wangxiaoer = new HashMap<String,Object>();
        Object nullObject = null;
        wangxiaoer.put("name", "王小二");
        wangxiaoer.put("age", 25.2);
        wangxiaoer.put("birthday", "1990-01-01");
        wangxiaoer.put("school", "蓝翔");
        wangxiaoer.put("major", new String[] { "理发", "挖掘机" });
        wangxiaoer.put("has_girlfriend", false);
        wangxiaoer.put("car", nullObject);
        wangxiaoer.put("house", nullObject);
        wangxiaoer.put("comment", "这是一个注释");

        System.out.println(new JSONObject(wangxiaoer).toString());
    }
3-3 使用Java Bean构建对象
    private static void createJsonByBean() {
        Diaosi wangxiaoer = new Diaosi();
        wangxiaoer.setName("王小二");
        wangxiaoer.setAge(25.2);
        wangxiaoer.setBirthday("1990-01-01");
        wangxiaoer.setSchool("蓝翔");
        wangxiaoer.setMajor(new String[] { "理发", "挖掘机" });
        wangxiaoer.setHas_girlfriend(false);
        wangxiaoer.setCar(null);
        wangxiaoer.setHouse(null);
        wangxiaoer.setComment("这是一个注释");
        System.out.println(new JSONObject(wangxiaoer));
    }
public class Diaosi {

    private String name;
    private String school;
    private boolean has_girlfriend;
    private double age;
    private Object car;
    private Object house;
    private String[] major;
    private String comment;
    private String birthday;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public boolean isHas_girlfriend() {
        return has_girlfriend;
    }
    public void setHas_girlfriend(boolean has_girlfriend) {
        this.has_girlfriend = has_girlfriend;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public Object getCar() {
        return car;
    }
    public void setCar(Object car) {
        this.car = car;
    }
    public Object getHouse() {
        return house;
    }
    public void setHouse(Object house) {
        this.house = house;
    }
    public String[] getMajor() {
        return major;
    }
    public void setMajor(String[] major) {
        this.major = major;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }



}
3-4 从文件读取JSON
{
    "birthday": "1990-01-01",
    "major": [
        "理发",
        "挖掘机"
    ],
    "school": "蓝翔",
    "car": null,
    "name": "王小二",
    "has_girlfriend": false,
    "comment": "这是一个注释",
    "house": null,
    "age": 25.2
}
public class ReadJSONSample {


    public static void main(String[] args) throws IOException, JSONException {
        File file = new File(ReadJSONSample.class.getResource("wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        JSONObject jsonObject = new JSONObject(content);
        System.out.println("姓名是:"+jsonObject.getString("name"));
        System.out.println("年龄"+jsonObject.getDouble("age"));
        System.out.println("有没有女朋友?"+jsonObject.getBoolean("has_girlfriend"));
        JSONArray majorArray = jsonObject.getJSONArray("major");
        for(int i = 0;i < majorArray.length(); i++) {
            String m = (String)majorArray.get(i);
            System.out.println("专业-" + (i+1) + m);
        }
    }
}
3-5 从文件读取JSON 判断null
public class ReadJSONSample {


    public static void main(String[] args) throws IOException, JSONException {
        File file = new File(ReadJSONSample.class.getResource("wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        JSONObject jsonObject = new JSONObject(content);
        if(!jsonObject.isNull("name")) {
            System.out.println("姓名是:"+jsonObject.getString("name"));
        }
        if(!jsonObject.isNull("nickname")) {
            System.out.println("姓名是:"+jsonObject.getString("nickname"));
        }
        System.out.println("年龄"+jsonObject.getDouble("age"));
        System.out.println("有没有女朋友?"+jsonObject.getBoolean("has_girlfriend"));
        JSONArray majorArray = jsonObject.getJSONArray("major");
        for(int i = 0;i < majorArray.length(); i++) {
            String m = (String)majorArray.get(i);
            System.out.println("专业-" + (i+1) + m);
        }
    }
}
3-6 JSON 总结
  • Json中没有Date类型
  • 通过JSON不能将JavaBean反解析回来
第4章 第四章 GSON的使用
4-1 GSON介绍

google-gson

4-2 GSON生成JSON数据
public class GsonCreateSample {

    public static void main(String[] args) {

        Diaosi wangxiaoer = new Diaosi();
        wangxiaoer.setName("王小二");
        wangxiaoer.setAge(25.2);
        wangxiaoer.setBirthday("1990-01-01");
        wangxiaoer.setSchool("蓝翔");
        wangxiaoer.setMajor(new String[] { "理发", "挖掘机" });
        wangxiaoer.setHas_girlfriend(false);
        wangxiaoer.setCar(null);
        wangxiaoer.setHouse(null);
        wangxiaoer.setComment("这是一个注释");

        Gson gson = new Gson();
        System.out.println(gson.toJson(wangxiaoer));
    }
}
public class Diaosi {

    @SerializedName("NAME")
    private String name;
    private String school;
    private boolean has_girlfriend;
    private double age;
    private Object car;
    private Object house;
    private String[] major;
    private String comment;
    private String birthday;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public boolean isHas_girlfriend() {
        return has_girlfriend;
    }
    public void setHas_girlfriend(boolean has_girlfriend) {
        this.has_girlfriend = has_girlfriend;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public Object getCar() {
        return car;
    }
    public void setCar(Object car) {
        this.car = car;
    }
    public Object getHouse() {
        return house;
    }
    public void setHouse(Object house) {
        this.house = house;
    }
    public String[] getMajor() {
        return major;
    }
    public void setMajor(String[] major) {
        this.major = major;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }



}
4-3 生成JSON数据
public class GsonCreateSample {

    public static void main(String[] args) {


        Diaosi wangxiaoer = new Diaosi();
        wangxiaoer.setName("王小二");
        wangxiaoer.setAge(25.2);
        wangxiaoer.setBirthday("1990-01-01");
        wangxiaoer.setSchool("蓝翔");
        wangxiaoer.setMajor(new String[] { "理发", "挖掘机" });
        wangxiaoer.setHas_girlfriend(false);
        wangxiaoer.setCar(null);
        wangxiaoer.setHouse(null);
        wangxiaoer.setComment("这是一个注释");
        wangxiaoer.setIgnore("不要看见我");

        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting();
        gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy(){


            public String translateName(Field f) {
                if(f.getName().equals("name")) {
                    return "NAME";
                }
                return f.getName();
            }
        });
        Gson gson = gsonBuilder.create();
        System.out.println(gson.toJson(wangxiaoer));
    }
}
public class Diaosi {

    private String name;
    private String school;
    private boolean has_girlfriend;
    private double age;
    private Object car;
    private Object house;
    private String[] major;
    private String comment;
    private String birthday;
    private transient String ignore;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public boolean isHas_girlfriend() {
        return has_girlfriend;
    }
    public void setHas_girlfriend(boolean has_girlfriend) {
        this.has_girlfriend = has_girlfriend;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public Object getCar() {
        return car;
    }
    public void setCar(Object car) {
        this.car = car;
    }
    public Object getHouse() {
        return house;
    }
    public void setHouse(Object house) {
        this.house = house;
    }
    public String[] getMajor() {
        return major;
    }
    public void setMajor(String[] major) {
        this.major = major;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public String getIgnore() {
        return ignore;
    }
    public void setIgnore(String ignore) {
        this.ignore = ignore;
    }



}
4-4 GSON解析
public class GsonReadSample {

    public static void main(String[] args) throws IOException {
        File file = new File(ReadJSONSample.class.getResource("../jsonTest/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        Gson gson = new Gson();
        Diaosi wangxiaoer = gson.fromJson(content, Diaosi.class);
        System.out.println(wangxiaoer.toString());
    }

}
public class Diaosi {

    private String name;
    private String school;
    private boolean has_girlfriend;
    private double age;
    private Object car;
    private Object house;
    private String[] major;
    private String comment;
    private String birthday;
    private transient String ignore;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public boolean isHas_girlfriend() {
        return has_girlfriend;
    }
    public void setHas_girlfriend(boolean has_girlfriend) {
        this.has_girlfriend = has_girlfriend;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public Object getCar() {
        return car;
    }
    public void setCar(Object car) {
        this.car = car;
    }
    public Object getHouse() {
        return house;
    }
    public void setHouse(Object house) {
        this.house = house;
    }
    public String[] getMajor() {
        return major;
    }
    public void setMajor(String[] major) {
        this.major = major;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public String getIgnore() {
        return ignore;
    }
    public void setIgnore(String ignore) {
        this.ignore = ignore;
    }
    @Override
    public String toString() {
        return "Diaosi [name=" + name + ", school=" + school + ", has_girlfriend=" + has_girlfriend + ", age=" + age
                + ", car=" + car + ", house=" + house + ", major=" + Arrays.toString(major) + ", comment=" + comment
                + ", birthday=" + birthday + "]";
    }



}
4-5 GSON解析 带日期转换
public class GsonReadSample {

    public static void main(String[] args) throws IOException {
        File file = new File(ReadJSONSample.class.getResource("../jsonTest/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        DiaosiWithBirthday wangxiaoer = gson.fromJson(content, DiaosiWithBirthday.class);
        System.out.println(wangxiaoer.getBirthday().toLocaleString());
    }

}
public class DiaosiWithBirthday {

    private String name;
    private String school;
    private boolean has_girlfriend;
    private double age;
    private Object car;
    private Object house;
    private String[] major;
    private String comment;
    private Date birthday;
    private transient String ignore;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public boolean isHas_girlfriend() {
        return has_girlfriend;
    }
    public void setHas_girlfriend(boolean has_girlfriend) {
        this.has_girlfriend = has_girlfriend;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public Object getCar() {
        return car;
    }
    public void setCar(Object car) {
        this.car = car;
    }
    public Object getHouse() {
        return house;
    }
    public void setHouse(Object house) {
        this.house = house;
    }
    public String[] getMajor() {
        return major;
    }
    public void setMajor(String[] major) {
        this.major = major;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getIgnore() {
        return ignore;
    }
    public void setIgnore(String ignore) {
        this.ignore = ignore;
    }

    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    @Override
    public String toString() {
        return "Diaosi [name=" + name + ", school=" + school + ", has_girlfriend=" + has_girlfriend + ", age=" + age
                + ", car=" + car + ", house=" + house + ", major=" + Arrays.toString(major) + ", comment=" + comment
                + ", birthday=" + birthday + "]";
    }



}
4-6 集合类解析
public class GsonReadSample {

    public static void main(String[] args) throws IOException {
        File file = new File(ReadJSONSample.class.getResource("../jsonTest/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        DiaosiWithBirthday wangxiaoer = gson.fromJson(content, DiaosiWithBirthday.class);
        System.out.println(wangxiaoer.getBirthday().toLocaleString());

        System.out.println(wangxiaoer.getMajor());
        System.out.println(wangxiaoer.getMajor().getClass());
    }

}
public class DiaosiWithBirthday {

    private String name;
    private String school;
    private boolean has_girlfriend;
    private double age;
    private Object car;
    private Object house;
    private List<String> major;
    private String comment;
    private Date birthday;
    private transient String ignore;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public boolean isHas_girlfriend() {
        return has_girlfriend;
    }
    public void setHas_girlfriend(boolean has_girlfriend) {
        this.has_girlfriend = has_girlfriend;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public Object getCar() {
        return car;
    }
    public void setCar(Object car) {
        this.car = car;
    }
    public Object getHouse() {
        return house;
    }
    public void setHouse(Object house) {
        this.house = house;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getIgnore() {
        return ignore;
    }
    public void setIgnore(String ignore) {
        this.ignore = ignore;
    }

    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public List<String> getMajor() {
        return major;
    }
    public void setMajor(List<String> major) {
        this.major = major;
    }


}
4-7 总结
  • JSON时Android SDK官方的库
  • GSON适用于服务端开发
    • GSON比JSON功能更强大

关于JSON库的总结
功能:映射Java Object与json格式数据

  1. 通过Annotation注解来声明。
  2. 支持自定义属性名称。
  3. 支持包含或排除属性。
  4. 支持自定义接口完成解析/生成过程。

《JSON快速入门(Java版)》视频地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值