JSON-JAVA(org.json),GSON,FASTJSON的使用

JSON-JAVA

创建JSON

private static void JSONObjectCreateByJavaBean() {
        // 创建javaBean对象
        Info info = new Info();
        info.setAge(21);
        info.setBirthday("1996-10-23");
        info.setCar(null);
        info.setComment("这是一个注释");
        info.setHas_gf(false);
        info.setHouse(false);
        info.setMajor(new String[] { "我会打酱油", "我会挖掘机" });
        info.setName("隆冬强");
        info.setSchool("lanxiang");
        System.out.println(new JSONObject(info));
        System.out.println(info.getBirthday());
    }

实体类:

package com.entity;
import java.util.Arrays;
public class Info {
    private String name;
    private String school;
    private boolean has_gf;
    private double age;
    private Object car;
    private Object house;
    private String[] major;
    private String comment;
    private String birthday;
    //在json生成过程中忽略掉这个属性
    private transient String ignore;

    //这里省略getXxx和setXxx方法

    @Override
    public String toString() {
        return "Info [name=" + name + ", school=" + school + ", has_gf=" + has_gf + ", age=" + age + ", car=" + car
                + ", house=" + house + ", major=" + Arrays.toString(major) + ", comment=" + comment + ", birthday="
                + birthday + "]";
    }
}

创建json的时候最好最好使用JAVABEAN来创建,可以重复使用当然也可以使用下面两种方式来创建,效果是一样的:

private static void JSONObjectCreate() {
        // 1、创建一个JSONObject对象
        JSONObject jsonObject = new JSONObject();
        Object nullObj = null;
        jsonObject.put("name", "哈哈");
        jsonObject.put("age", 21);
        jsonObject.put("birthday", "1996-10-23");
        jsonObject.put("major", new String[] { "挖掘机", "推土机" });
        jsonObject.put("has_gf", false);
        jsonObject.put("car", nullObj);
        jsonObject.put("house", nullObj);
        jsonObject.put("comment", "这是一个注释");
        // 输出
        System.out.println(jsonObject.toString());
    }
    private static void JSONObjectCreateByMap() {
        // TODO Auto-generated method stub
        Map<String, Object> map = new HashMap<String, Object>();
        Object nullObj = null;
        map.put("name", "来来来");
        map.put("age", 21);
        map.put("birthday", "1996-10-23");
        map.put("major", new String[] { "挖掘机", "推土机" });
        map.put("has_gf", false);
        map.put("car", nullObj);
        map.put("house", nullObj);
        map.put("comment", "这是一个注释");
        // 输出
        System.out.println(new JSONObject(map).toString());
    }

推荐使用Javabean的方式!

GSON解析JSON

这是解析的json文件

{
    "name": "光头强",
    "age": "21",
    "birthday": "1996-10-23",
    "school": "蓝翔",
    "has_gf": false,
    "major": [
        "挖掘机",
        "推土机"
    ],
    "car": null,
    "house": null,
    "comment": "这是一个注释",
    "apple": {
        "price": "100元",
        "weight": "10kg",
        "color": "红色"
    }

}
private static void parseJson() throws Exception {
        // 路径:src/main/resources/jsons/info.json
        File fis = new File("src/main/resources/jsons/info.json");
        // 得到文件当中的内容
        String content = FileUtils.readFileToString(fis, "gbk");

        JSONObject jsonObject = new JSONObject(content);
        //解析字符串
        System.out.println("姓名是------>" + jsonObject.getString("name"));
        //解析数组
        JSONArray jsonArray = jsonObject.getJSONArray("major");
        for (int i = 0; i < jsonArray.length(); i++) {
            String string = (String) jsonArray.get(i);
            System.out.println("专业:" + (i + 1) + string);
        }
        //简单对象解析
        JSONObject jsonObject2 = jsonObject.getJSONObject("apple");
        System.out.println(jsonObject2.get("price"));

    }

Gson生成JSON

private static void GsonCreate() {
        // 创建javaBean对象
        Info info = new Info();
        info.setAge(21);
        info.setBirthday("1996-10-23");
        info.setCar(null);
        info.setComment("这是一个注释");
        info.setHas_gf(false);
        info.setHouse(false);
        info.setMajor(new String[] { "我会打酱油u", "我会挖掘机 " });
        info.setName("哈哈哈");
        info.setSchool("lanxiang");
        info.setIgnore("不要看见我");

        //创建GsonBuilder对象
        GsonBuilder gsonBuilder = new GsonBuilder();
        //设置打印是否格式化 便于阅读
        gsonBuilder.setPrettyPrinting();
        //创建gson对象
        //Gson gson = new Gson();也可以这样创建 ,但是无法做一些设置,比如格式化
        Gson gson = gsonBuilder.create();
        System.out.println(gson.toJson(info));
    }

解析JSON

private static void GsonParse() throws Exception {
        // 路径:src/main/resources/jsons/info.json
        File fis = new File("src/main/resources/jsons/info.json");
        // 得到文件当中的内容
        String content = FileUtils.readFileToString(fis, "gbk");
        Gson gson = new Gson();
        //把json对象进行泛解析
        Info info = gson.fromJson(content, Info.class);
        System.out.println(info);
        System.out.println(info.getSchool());
//      格式化时间日期,需要把实体类中的birthday类型换成Data 就可以看出来
//      Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
//      Info2 info2 = gson.fromJson(content, Info2.class);
//      System.out.println(info2.getBirthday().toLocaleString());
//      //输出List集合  String数组类型换成List集合就可以看出来
//      System.out.println(info2.getMajor());
//      System.out.println(info2.getMajor().get(1));
    }

FastJSON生成JSON

    private static void createFastJson() {

        Info info = new Info();
        info.setAge(21);
        info.setBirthday("1996-10-23");
        info.setCar(null);
        info.setComment("这是一个注释");
        info.setHas_gf(false);
        info.setHouse(false);
        info.setMajor(new String[] { "我会打酱油", "我会挖掘机 " });
        info.setName("提莫");
        info.setSchool("lanxiang");
        info.setIgnore("不要看见我");

        System.out.println(JSON.toJSONString(info));
    }

这里还是,使用上面的javabean,使用JSON.toJSONString()方法,和别的json没多大区别
这里提供一个官方的Sample

public static void FastJsonCreate() {

        Group group = new Group();
        group.setId(0L);
        group.setName("admin");

        User guestUser = new User();
        guestUser.setId(2L);
        guestUser.setName("guest");

        User rootUser = new User();
        rootUser.setId(3L);
        rootUser.setName("root");

        group.addUser(guestUser);
        group.addUser(rootUser);

        String jsonString = JSON.toJSONString(group);
        //控制台输出json
        System.out.println(jsonString);

        JSON.writeJSONString(new FileOutputStream("src/main/resources/jsons/role.json"), Charset.forName("gbk"), group,
                //格式化json
                SerializerFeature.PrettyFormat);

    }


Group.java

public class Group {

    private Long       id;
    private String     name;
    private List<User> users = new ArrayList<User>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

        public void addUser(User user) {
            users.add(user);
        }
}

User.java

public class User {

    private Long   id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

FastJSON解析JSON

    private static void parseFastJson() throws IOException {
        // 找到json文件
        File file = new File("src/main/resources/jsons/role.json");
        // 使用io包中的FileUtils方法读取json文件
        String content = FileUtils.readFileToString(file, "gbk");

        // Info parseObject = JSON.parseObject(content, Info.class);
        // System.out.println(parseObject);
        // System.out.println(parseObject.getBirthday());
        //创建group对象,这点有点类似Gson哈
        Group group = JSON.parseObject(content, Group.class);
        System.out.println(JSON.toJSONString(group));
        System.out.println(JSON.toJSONString(group.getName()));
        System.out.println(JSON.toJSONString(group.getName().get(0)));
        System.out.println(JSON.toJSONString(group.getName().get(0).getName()));

    }

需要注意的是 JSON.writeJSONString 这个方法的最后一个参数 点击 ctrl 打开看,可以是这些值:我使用了一个格式化的参数,我也不知道这么多的参数每个的意思,有兴趣的同学可以都试试。
QuoteFieldNames, UseSingleQuotes, WriteMapNullValue, WriteEnumUsingToString, WriteEnumUsingName, UseISO8601DateFormat, WriteNullListAsEmpty, WriteNullStringAsEmpty, WriteNullNumberAsZero, WriteNullBooleanAsFalse, SkipTransientField, SortField, WriteTabAsSpecial, PrettyFormat(格式化), WriteClassName, DisableCircularReferenceDetect, WriteSlashAsSpecial, BrowserCompatible, WriteDateUseDateFormat, NotWriteRootClassName, DisableCheckSpecialChar, BeanToArray, WriteNonStringKeyAsString, NotWriteDefaultValue, BrowserSecure, IgnoreNonFieldGetter, WriteNonStringValueAsString, IgnoreErrorGetter, WriteBigDecimalAsPlain, MapSortField;

结束语:这三种方式都可以在web ,安卓 当中使用 ,其中JSON-JAVA(org.java) 不需要在安卓中引入依赖直接使用即可,安卓中Gson需要引入依赖,而在web中JSON-JAVA和Gson都需要引入依赖.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值