枚举、jsonObject对象

本文介绍了Java中的jsonObject对象,它基于HashMap实现键值对存储。讲解了从Java变量到JSON的编码过程,以及JSON对象与字符串的相互转化。同时,文章也探讨了枚举的概念,包括其私有构造函数、常量特性,以及如何在Java中定义和使用枚举。

jsonObject对象 

jsonObject对象 是个键值对,key-value底层其实就是hashMap 

      <!-- 阿里的json -->
      <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</version>
        </dependency>
  • 从 Java 变量到 JSON 格式的编码过程如下:
    • put(key,value);
    • value可以是任意类型,包括集合
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("Student","张三");
        jsonObject.put("age",18);

        List<Integer> integers = Arrays.asList(1,2,3,4);
        jsonObject.put("list",integers);
        jsonObject.put("null",null);
        System.out.println(jsonObject);

在上例中,首先建立一个 JSON 对象,然后依次添加字符串、整数、布尔值以及数组,最后将其打印为字符串。

输出结果如下:
        // {"Student":"张三","list":[1,2,3,4],"age":18}
  •  从 JSON 对象到 Java 变量的解码过程如下:
JSONObject object = JSONObject.parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}");
        Boolean b = object.getBooleanValue("boolean");
        System.out.println(b);

        String str = object.getString("string");
        System.out.println(str);

        str = object.getString("null");
        System.out.println(str);

        List<Integer> list =JSONArray.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);
        list.forEach(System.out::println);

首先从 JSON 格式的字符串中构造一个 JSON 对象,之后依次读取字符串、整数、布尔值以及数组,最后分别打印,打印结果如下:
  •  JSON 对象与字符串的相互转化
        // 字符串 转换为json对象
        JSONObject object = JSONObject.parseObject("{\"runoob\":\"菜鸟教程\"}");
        System.out.println(object);

        // 字符串 转换为json数组
        JSONArray arr = JSONObject.parseArray("[\"菜鸟教程\",\"RUNOOB\"]\n");
        System.out.println(arr);

        // json对象转换为 字符串
        str = JSONObject.toJSONString(object);
        System.out.println(str);

        // json数组转换为 字符串
        str = JSONObject.toJSONString(arr);
        System.out.println(str);

        
        // 字符串 转json对象,获取jsonArray里的数据
        JsonArray dataArray = JsonObject.parseObject(str).getJsonArray("data");
        // 将数组转成JsonObject对象,数组里取下标为0,即:第一个
        JsonObject data = (JsonObject) datadata.get(0);
        String message = data.getString("message");

        //集合 
        String list = data.getString("resultList");
        JsonArray jsonArray = JsonArray.parseArray(list);
        JsonObject jsonObject = (JsonObject)jsonArray.get(0);        


        // 将字符串结果转换成JSONArray对象的形式  
        JSONArray jsonArray = JSONArray.fromObject(str);
        // 获取json数组中的第一项  
        JSONObject jsonObj = jsonArray.getJSONObject(0);
        String result = jsonObj.getJSONObject("name1").getJSONObject("name2");

枚举

  • 枚举就是一类,比如颜色,日期(周一至周日) 
  • 构造函数必须是私有的,不写默认私有
  • 都是常量可以直接调用
  • 定义枚举,要先定义构造方法,属性,然后才能定义枚举
  • 我们调用的时候无需new对象(不允许new),直接调用该常量的参数,即可获取该枚举的值
枚举是JDK5引入的新特性。在某些情况下,一个类的对象是固定的,就可以定义为枚举。在实际使用中,枚举类型也可以作为一种规范,保障程序参数安全。枚举有以下特点:

Java中枚举和类、接口的级别相同。
枚举和类一样,都有自己的属性、方法、构造方法,不同点是:枚举的构造方法只能是private修饰,也就无法从外部构造对象。构造方法只在构造枚举值时调用。
使用enum关键字声明一个枚举类型时,就默认继承自Java中的 java.lang.Enum类,并实现了java.lang.Seriablizable和 java.lang.Comparable两个接口。
所有的枚举值都是 public static final 的,且非抽象的枚举类不能再派生子类。
枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。
判断枚举是否相同时,使用 == 和 equals 是一样的。
// 枚举是enum类型 sun公司引进的新的关键字
public enum DateDemo {
    // 枚举以逗号分开,分号结尾
    MONDAY(0,"周一"),Tuesday(1,"周二"),Wednesday(2,"周三");

    // 其余的 属性、构造正常写
    private String str;
    private Integer index;

    DateDemo(Integer i, String str){
        this.index = i;
        this.str = str;
    }

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    public Integer getIndex() {
        return index;
    }

    public void setIndex(Integer index) {
        this.index = index;
    }

    public static void main(String[] args) {
        // 这里调用了枚举 获取它的str的值
        System.out.println(DateDemo.Tuesday.getStr());
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值