工具类 能够快速解析json字符串中元素的帮助类

2019年7月28日,第一阶段的中之保风控系统项目已经完成了开发,在开发过程中,我大量接触到了解析json字符串的需求,拿去对应需求的元素。在此过程中,我编写了能够快速拿取json字符串的帮助类。

一、引入依赖:

//用gradle管理
implementation "com.fasterxml.jackson.core:jackson-databind"

二、帮助类代码:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;

/**
 * @author edison_kwok
 */
public class JsonUtils {

    private static ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 根据路径解析json字符串,获取String类型数据
     *
     * @param content
     * @param path
     * @return
     * @throws IOException
     */
    public static String parse(String content, Object[] path) throws IOException {
        if (StringUtils.isBlank(content)) {
            return null;
        }
        try {
            JsonNode node = objectMapper.readTree(content);
            int len = path.length;
            int index = 0;
            while (index < len) {
                if (path[index] instanceof Integer) {
                    int i = (Integer) path[index];
                    node = node.get(i);
                } else if (path[index] instanceof String) {
                    String s = (String) path[index];
                    node = node.get(s);
                }
                index++;
            }
            String result = node.toString();
            return result.substring(1, result.length() - 1);
        } catch (NullPointerException e) {
            return null;
        }
    }

    /**
     * 根据路径解析json字符串,获取Integer类型字符串
     *
     * @param content
     * @param path
     * @return
     * @throws IOException
     */
    public static Integer parseInteger(String content, Object[] path) throws IOException {
        if (StringUtils.isBlank(content)) {
            return null;
        }
        try {
            JsonNode node = objectMapper.readTree(content);
            int len = path.length;
            int index = 0;
            while (index < len) {
                if (path[index] instanceof Integer) {
                    int i = (Integer) path[index];
                    node = node.get(i);
                } else if (path[index] instanceof String) {
                    String s = (String) path[index];
                    node = node.get(s);
                }
                index++;
            }
            String result = node.toString();
            return Integer.parseInt(result);
        } catch (NullPointerException e) {
            return null;
        }
    }

    /**
     * 根据路径解析json字符串,获取当中的json字符串
     *
     * @param content
     * @param path
     * @return
     * @throws IOException
     */
    public static String parseJson(String content, Object[] path) throws IOException {
        if (StringUtils.isBlank(content)) {
            return null;
        }
        try {
            JsonNode node = objectMapper.readTree(content);
            int len = path.length;
            int index = 0;
            while (index < len) {
                if (path[index] instanceof Integer) {
                    int i = (Integer) path[index];
                    node = node.get(i);
                } else if (path[index] instanceof String) {
                    String s = (String) path[index];
                    node = node.get(s);
                }
                index++;
            }
            return node.toString();
        } catch (NullPointerException e) {
            return null;
        }
    }
}

三、使用:

在项目开发中,如果大量使用到了json解析需求,可以使用本帮助类。

转载于:https://my.oschina.net/edisonOnCall/blog/3080213

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值