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

被折叠的 条评论
为什么被折叠?



