Fastjson 是一个java类库,可以被用来把Java对象转换成Json方式.也可以把Json字符串转换成对应的Java对象,不过这些好用的应用竟然有漏洞,因此大家想着能用什么来替代它?下面来我们就来给大家讲解一下这方面的内容。
使用Gson或者jackson代替Fastjson。
如何替代?
我们常用的json解析工具包括:阿里的Fastjson、Jackson和google的Gson,据测试,Fastjson较Jackson快了20%左右,Gson最慢。所以很多程序猿喜欢使用Fastjson。但是阿里提供的Fastjson近期频繁爆出安全漏洞,同时本着最小依赖原则,建议使用Jackson替换Fastjson
需要的依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency> < dependency > <groupId>com.fasterxml.jackson.core</groupId> < artifactId > jackson - core < /artifactId> < version > 2.9 .5 < /version> < /dependency> < dependency > <groupId>com.fasterxml.jackson.core</groupId> < artifactId > jackson - annotations < /artifactId> < version > 2.9 .5 < /version> < /dependency>
1. ObjectNode与ArrayNode
当我们需要操作一个json对象或者json数组的时候,我们可以使用下面的方法来构造ObjectNode和ArrayNode,类似fastjson中的JSONObject和JSONArray。
ObjectMapper mapper = new ObjectMapper(); ObjectNode node = mapper.createObjectNode(); node.put("name", "test"); node.put("age", 20); System.out.println(node); ArrayNode array = mapper.createArrayNode(); array.add(node); System.out.println(array);
2. json转对象
ObjectMapper objectMapper = new ObjectMapper(); Person person = objectMapper.readValue(jsonString, Person.class); System.out.println(person.toString());
3. 对象转json
ObjectMapper objectMapper = new ObjectMapper(); Person person = new Person().setName("test").setAge(20); String jsonString = objectMapper.writeValueAsString(person); System.out.println("JsonString: " + jsonString);
4. json转泛型对象
ObjectMapper objectMapper = new ObjectMapper(); ListpersonList = objectMapper.readValue(jsonString, new TypeReference<list>() {}); System.out.println(personList.toString());
Fastjson可以作用于任何Java对象,不过Fastjson会有漏洞,因此我们可以用使用Gson或者jackson代替Fastjson哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: