1、fastjson
需要引用的包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
代码示例:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.LinkedHashMap;
public class JsonPathTest {
public static void main(String[] args) {
String json ="{\"msg\":\"登录成功\",\"uid\":\"E2BBEDC09FAA1232B8D85C96DF4444CF\",\"code\":\"1\"}";
JSONObject object = (JSONObject) JSON.parse(json);
Object code= object.get("code");
//json直接转map
Map map2 = (Map) JSON.parseObject(json, LinkedHashMap.class);
System.out.println(map2.getClass() +" map2 " +map2);
}
}
这种方式转换,特点:简单明了,但是对于部分特殊字符无法转换(比如html标签+文件特殊符号),还有个特点:他是直接转换的,而不是逐层转换。
2、jackson(Mapper)
需要引用的包
<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>
代码示例:
import java.util.Map;
import java.util.TreeMap;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonPathTest {
public static void main(String[] args) {
String json ="{\"msg\":\"登录成功\",\"uid\":\"E2BBEDC09FAA1232B8D85C96DF4444CF\",\"code\":\"1\"}";
ObjectMapper mapper = new ObjectMapper();
try {
Map map= mapper.readValue(json, TreeMap.class);
System.out.println(map.getClass() +" map1 " +map);
code= map.get("code");
} catch (IOException e) {
e.printStackTrace();
}
}
}
这种方式转换json,<font color="#dd0000">特点是兼容性高,对于部分特殊字符也能转换成功</font>。 而且转换的时候是逐级转换。
3、JsonPath
需要引用的包
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
代码示例:
import com.jayway.jsonpath.JsonPath;
public class JsonPathTest {
public static void main(String[] args) {
String json ="{\"msg\":\"登录成功\",\"uid\":\"E2BBEDC09FAA1232B8D85C96DF4444CF\",\"code\":\"1\"}";
JSONObject object = (JSONObject) JSON.parse(json);
Object code= object.get("code");
//取code值,用"$.code"(通用写法)
code= JsonPath.read(json2, "$.code");
System.out.println(code.getClass() +" " +code);
}
}
JsonPath是从JSON文档中抽取指定的信息的工具。这种方式结构清晰,可读性高,复杂度低,非常容易匹配。
网友评论