# zhuf.json **Repository Path**: he-junyang/zhuf.json ## Basic Information - **Project Name**: zhuf.json - **Description**: 一个用 java 编写的json解析器, 用于个人学习, 代码量不多, 注释详细 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-04 - **Last Updated**: 2023-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zhuf.json zhuf.json 是一款使用java开发的json解析器, 主要用于学习,不用于生产. > 使用如下 将json串解析成Json对象: ```java String json = "{\"hello\": [12,13.24,-12,\"world\"]}"; Json json1 = Json.parseStringAsJson(json); System.out.println(json1.toString()); ``` 将对象解析成Json串 ```java InputStream stream = com.hjy.Main.class.getClassLoader().getResourceAsStream("test.json"); BufferedInputStream bufferedInputStream = new BufferedInputStream(stream); // 设置字节数组和长度 byte[] b = new byte[1024]; int len = 0; StringBuilder s = new StringBuilder(); // 只要读取到,就输出 while ((len = bufferedInputStream.read(b)) != -1) { s.append(new String(b, 0, len)); } stream.close(); bufferedInputStream.close(); Parser parser = new Parser(s.toString()); Json parse = parser.Parse(); Json key = parse.getKey("data").getKey("total"); System.out.println(key.toString()); // "2" ``` 操作 Json 对象, 获取其值 ```java StringBuffer s; Json parse = Json.parseStringAsJson(s.toString()); Json key = parse.getKey("data").getKey("total"); System.out.println(key.toString()); // "2" ``` json 字符串转换为bean ```java String json = "{\"habits\":[\"吃饭0\",\"睡觉0\"],\"name\":\"何骏扬0\",\"age\":10}"; // Json json1 = Json.parseStringAsJson(json); // System.out.println(json1); Student bean = Json.toBean(json, Student.class); System.out.println(bean); json = "{\"num\":32,\"name\":\"软件20-7班\",\"students\":[{\"habits\":[\"吃饭0\",\"睡觉0\"],\"name\":\"何骏扬0\",\"age\":10},{\"habits\":[\"吃饭1\",\"睡觉1\"],\"name\":\"何骏扬1\",\"age\":11},{\"habits\":[\"吃饭2\",\"睡觉2\"],\"name\":\"何骏扬2\",\"age\":12},{\"habits\":[\"吃饭3\",\"睡觉3\"],\"name\":\"何骏扬3\",\"age\":13}]}\n"; Clazz bean1 = Json.toBean(json, Clazz.class); System.out.println(bean1); ``` 设计思路如下 : 1. Json 对象由两部分构成 - TYPE 枚举, 标志这个Json对象的类型 - Value 值, 内部类, 设置这个Json对象实际的值 2. Json 对象有三个核心方法 - parseStringAsJson 将字符串转换为Json对象, 这个方法使用到了Parser对象 - parseObjectAsJson 将复杂对象转换为Json对象 - ToString 转换为Json字符串 3. Parser 对象将一个字符串通过 Parser 方法, 转换为一个Json对象, 核心方式就是下标偏移和递归