三个json框架数据提取

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文档中抽取指定的信息的工具。这种方式结构清晰,可读性高,复杂度低,非常容易匹配。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 沙沙沙 秋天的树叶 在低声吟唱 歌颂着生活的美好与安详。 老奶奶 推着婴儿车 看着小孙子在牙牙学语 小朋友 跑来跑...
    梦雪他乡阅读 2,622评论 0 10