Json。

Json。



https://www.json.org/json-en.html

JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计算机协会制定的 js 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

数据表示。

数据结构。
  • Object。

使用花括号 {} 包含的键值对结构,key 必须是 String 类型,value 为任意基本类型或数据结构。

  • Array。

使用中括号 [] 来起始,并用逗号 , 来分隔元素。

基本类型。

string
number
true
false
null


使用(org.json)。

(org.json)。

https://github.com/stleary/JSON-java

  • pom.xml。
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20200518</version>
        </dependency>
package com.geek;

import org.json.JSONObject;

public class JsonObjectSample {

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

    private static void jSONObject() {
        Object nullObj = null;
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "王小二");
        jsonObject.put("age", 25.2);
        jsonObject.put("birthday", "1990-01-01");
        jsonObject.put("school", "蓝翔");
        jsonObject.put("major", new String[]{"理发", "挖掘机"});
        jsonObject.put("has_girlfriend", false);
        jsonObject.put("car", nullObj);
        jsonObject.put("house", nullObj);
        jsonObject.put("comment", "这是一个注释。");
        System.out.println(jsonObject.toString());
        // {"birthday":"1990-01-01","major":["理发","挖掘机"],"school":"蓝翔","name":"王小二","has_girlfriend":false,"comment":"这是一个注释。","age":25.2}
    }
}


通过 HashMap 创建。
package com.geek;

import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class JsonObjectSample {

    public static void main(String[] args) {
//        jSONObject();
        createJsonByMap();
    }

    // 通过 HashMap 创建。
    private static void createJsonByMap() {
        Object nullObj = null;
        Map<String, Object> map = new HashMap<>();
        map.put("name", "王小二");
        map.put("age", 25.2);
        map.put("birthday", "1990-01-01");
        map.put("school", "蓝翔");
        map.put("major", new String[]{"理发", "挖掘机"});
        map.put("has_girlfriend", false);
        map.put("car", nullObj);
        map.put("house", nullObj);
        map.put("comment", "这是一个注释。");
        System.out.println(new JSONObject(map).toString());
    }

}


通过 JavaBean 创建。
package com.geek;

import com.geek.bean.Diaosi;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class JsonObjectSample {

    public static void main(String[] args) {
//        jSONObject();
//        createJsonByMap();
        createJsonByBean();
    }

    private static void createJsonByBean() {
        Diaosi diaosi = new Diaosi();
        diaosi.setName("王小二");
        diaosi.setAge(25.2);
        diaosi.setBirthday("1990-01-01");
        diaosi.setSchool("蓝翔");
        diaosi.setMajor(new String[]{"理发", "挖掘机"});
        diaosi.setHas_girlfriend(false);
        diaosi.setCar(null);
        diaosi.setHouse(null);
        diaosi.setComment("这是一个注释。");
        System.out.println(new JSONObject(diaosi));
        // {"birthday":"1990-01-01","major":["理发","挖掘机"],"school":"蓝翔","name":"王小二","has_girlfriend":false,"comment":"这是一个注释。","age":25.2}
    }

}

package com.geek.bean;

import java.util.Arrays;

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 birthday;
    private String comment;

    @Override
    public String toString() {
        return "Diaosi{" +
                "name='" + name + '\'' +
                ", school='" + school + '\'' +
                ", has_girlfriend=" + has_girlfriend +
                ", age=" + age +
                ", car=" + car +
                ", house=" + house +
                ", major=" + Arrays.toString(major) +
                ", birthday='" + birthday + '\'' +
                ", comment='" + comment + '\'' +
                '}';
    }

    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 getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
}


从文件读取 JSON。
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
package com.geek;

import org.apache.commons.io.FileUtils;
import org.json.JSONObject;

import java.io.File;
import java.io.IOException;

public class ReadJson {

    public static void main(String[] args) throws IOException {
//        URL resource = ReadJson.class.getResource("/");
//        System.out.println("resource = " + resource);
        File file = new File(ReadJson.class.getResource("/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        JSONObject jsonObject = new JSONObject(content);
        System.out.println("jsonObject = " + jsonObject);
    }
}

在这里插入图片描述

package com.geek;

import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import java.io.File;
import java.io.IOException;

public class ReadJson {

    public static void main(String[] args) throws IOException {
//        URL resource = ReadJson.class.getResource("/");
//        System.out.println("resource = " + resource);
        File file = new File(ReadJson.class.getResource("/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        JSONObject jsonObject = new JSONObject(content);
        System.out.println("jsonObject = " + jsonObject);
        // jsonObject = {"birthday":"1990-01-01","major":["理发","挖掘机"],"school":"蓝翔","car":null,"name":"王小二","has_girlfriend":false,"comment":"这是一个注释。","house":null,"age":25.2}
        System.out.println("姓名是:" + jsonObject.getString("name"));
        // ...
        JSONArray jsonArray = jsonObject.getJSONArray("major");
        System.out.println("jsonArray = " + jsonArray);
        for (Object o : jsonArray) {
            System.out.println(o);
        }
    }
}


判断 null。

jsonObject.isNull(“name”)


GSON。

https://github.com/google/gson/

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>
package com.geek;

import com.geek.bean.Diaosi;
import com.google.gson.Gson;

public class GsonCreateSample {

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

        Gson gson = new Gson();
        String s = gson.toJson(diaosi);
        System.out.println("s = " + s);
        // s = {"name":"王小二","school":"蓝翔","has_girlfriend":false,"age":25.2,"major":["理发","挖掘机"],"birthday":"1990-01-01","comment":"这是一个注释。"}
    }
}

  • 注解。
package com.geek.bean;

import com.google.gson.annotations.SerializedName;

import java.util.Arrays;

public class Diaosi {

    @SerializedName("NAME")// 转换为 json 后为 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 birthday;
    private String comment;

    @Override
    public String toString() {
        return "Diaosi{" +
                "name='" + name + '\'' +
                ", school='" + school + '\'' +
                ", has_girlfriend=" + has_girlfriend +
                ", age=" + age +
                ", car=" + car +
                ", house=" + house +
                ", major=" + Arrays.toString(major) +
                ", birthday='" + birthday + '\'' +
                ", comment='" + comment + '\'' +
                '}';
    }

    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 getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
}

~

s = {"NAME":"王小二","school":"蓝翔","has_girlfriend":false,"age":25.2,"major":["理发","挖掘机"],"birthday":"1990-01-01","comment":"这是一个注释。"}

  • 美化功能。
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting();
        Gson gson = gsonBuilder.create();

//        Gson gson = new Gson();
        String s = gson.toJson(diaosi);
        System.out.println("s = " + s);
s = {
  "NAME": "王小二",
  "school": "蓝翔",
  "has_girlfriend": false,
  "age": 25.2,
  "major": [
    "理发",
    "挖掘机"
  ],
  "birthday": "1990-01-01",
  "comment": "这是一个注释。"
}


GsonBuilder。
package com.geek;

import com.geek.bean.Diaosi;
import com.google.gson.FieldNamingStrategy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.lang.reflect.Field;

public class GsonCreateSample {

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

        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setPrettyPrinting();
        gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {
            @Override
            public String translateName(Field field) {
                if (field.getName().equals("name")) {
                    return "NAME";
                }
                return field.getName();
            }
        });
        Gson gson = gsonBuilder.create();

//        Gson gson = new Gson();
        String s = gson.toJson(diaosi);
        System.out.println("s = " + s);
        // s = {"NAME":"王小二","school":"蓝翔","has_girlfriend":false,"age":25.2,"major":["理发","挖掘机"],"birthday":"1990-01-01","comment":"这是一个注释。"}
    }
}


transient。
public class Diaosi {

//    @SerializedName("NAME")// 转换为 json 后为 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 birthday;
    private String comment;

    // transient 关键字。
    private transient String ignore;

    public String getIgnore() {
        return ignore;
    }

    public void setIgnore(String ignore) {
        this.ignore = ignore;
    }

生成的 json 中不会包含 ignore。


GSON 解析。
package com.geek;

import com.geek.bean.Diaosi;
import com.google.gson.Gson;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class GsonRead {

    public static void main(String[] args) throws IOException {
        File file = new File(GsonRead.class.getResource("/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);

        Gson gson = new Gson();
        Diaosi diaosi = gson.fromJson(content, Diaosi.class);
        System.out.println("diaosi = " + diaosi);
    }
}


Date。
private Date birthday;
package com.geek;

import com.geek.bean.DiaosiWithBirthday;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class GsonRead {

    public static void main(String[] args) throws IOException {

        File file = new File(GsonRead.class.getResource("/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        DiaosiWithBirthday diaosiWithBirthday = gson.fromJson(content, DiaosiWithBirthday.class);
        System.out.println("diaosiWithBirthday = " + diaosiWithBirthday);
    }
}


集合类解析。
    private List<String> major;
package com.geek;

import com.geek.bean.Diaosi;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class GsonRead {

    public static void main(String[] args) throws IOException {

        File file = new File(GsonRead.class.getResource("/wangxiaoer.json").getFile());
        String content = FileUtils.readFileToString(file);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        Diaosi diaosi = gson.fromJson(content, Diaosi.class);
        System.out.println(diaosi.getMajor());// [理发, 挖掘机]
        System.out.println(diaosi.getMajor().getClass());
        // class java.util.ArrayList
    }
}

private Set major;

class java.util.LinkedHashSet

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyfGeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值