json解析
1.添加依赖
首先需要向pom.xml中导入依赖gson或fastjson,其中fastjson是阿里提供的后后面要用到JSON.parseObject时需要这个依赖,gson里没有。
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
2.json
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
JSON其实就是一串字符串 只不过元素会使用特定的符号标注。
1 .[]中括号代表的是一个数组;
2. {}大括号代表的是一个对象
3. 双引号“”表示的是属性值
4 .冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。
所以 {“name”: “Michael”} 可以理解为是一个包含name为Michael的对象
而[{“name”: “Michael”},{“name”: “Jerry”}]就表示包含两个对象的数组
当然了,你也可以使用{“name”:[“Michael”,“Jerry”]}来简化上面一部,这是一个拥有一个name数组的对象
3.简单json解析例子(gson解析)
首先看一个HashMap集合和josn输出结果
import java.util.HashMap;
/**
* @Author : ld
* @Description :
* @ClassName : JsonDemo1
* @Date : 2021/9/10 19:50
* @Version : 1.0
*/
public class JsonDemo1 {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("age","19");
System.out.println(map);
String josnStr="{\"age\":19}";
System.out.println(josnStr);
}
}
gson解析
import com.google.gson.Gson;
import java.util.HashMap;
/**
* @Author : ld
* @Description :
* @ClassName : JsonDemo
* @Date : 2021/9/10 9:40
* @Version : 1.0
*/
public class JsonDemo {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
String str = "{\"id\":\"1001\",\"name\":\"李四\",\"gender\":\"男\",\"age\":28}";
System.out.println(str);
//josn解析成hashMap
// Gson gson = new Gson();
// HashMap hashMap = gson.fromJson(str, map.getClass());
// System.out.println(hashMap.get("age"));
//json解析成Java对象
// Gson gson = new Gson();
// Student student = gson.fromJson(str, Student.class);
// System.out.println(student.getAge());
//转为json格式
Gson gson = new Gson();
Student student = new Student("1002", "罗晶晶", "女", 22);
String s = gson.toJson(student);
System.out.println(s);
}
}
4.fastjson解析
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
/**
* @Author : ld
* @Description :
* @ClassName : JsonDemo2
* @Date : 2021/9/10 19:53
* @Version : 1.0
*/
public class JsonDemo2 {
public static void main(String[] args) {
String str = "{\"id\":\"1001\",\"name\":\"李四\",\"gender\":\"男\",\"age\":28}";
// JSONObject jo=JSON.parseObject(str);
// Object id = jo.get("id");
// System.out.println(id);
Student student = JSON.parseObject(str, Student.class);
System.out.println(student.getName());
}
}
上面所需的Student类如下(需要lombok这个插件)
import lombok.*;
/**
* @Author : ld
* @Description :
* @ClassName : Student
* @Date : 2021/9/10 19:44
* @Version : 1.0
*/
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Student {
private String id;
private String name;
private String gender;
private int age;
}
junit单元测试
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。简单来说,就是测试数据的稳定性是否达到程序的预期
在Junit单元测试中,有一个@Before注解,是用作资源的申请。也就是被@Before注解修饰的的方法会在测试方法之前自动执行。所以,我们可以去定义一个init方法,去初始化这个创建对象的过程。这就是@Before注解的作用!
有些应用场景,比如IO流的读写操作。如果我们要测试此代码,是需要一个关闭流的过程,通过我们关闭流使用finally块来保证最后流的关闭操作。这时,我们在Junit单元测试中,有一个@After注解,是用作资源的关闭。也就是说被@After注解修饰的方法会在测试方法之后自定执行。所以,我们在特定需要保证最后关闭、销毁资源的时候,可以去定义一个close方法,去关闭或销毁资源。这就是@After注解的作用!
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @Author : ld
* @Description :
* @ClassName : JunitDemo
* @Date : 2021/9/10 10:29
* @Version : 1.0
*/
public class JunitDemo {
@Test
public void login(){
System.out.println("登录");
}
@Before
public void register(){
System.out.println("注册");
}
@After
public void end(){
System.out.println("结束");
}
}