JAVA中使用JSONPath.eval()取值路径中存在中划线(短横线)'-'

 

 

如果路径含有中划线,将无法取到值

如:$.aa964cf2-bf62-36bd4811.53672-bf62-42906dc.6458b-82c1-3a157e2a

 这时候就需要转换下

变成

$['aa964cf2-bf62-36bd4811']['53672-bf62-42906dc']['6458b-82c1-3a157e2a']

 

 

转换的java代码如下:

/**
     * 转换表达式在json,因为jsonPath不支持 "-"
     * @param expression 带有特殊字符的路径
     * @return  返回转换过的路径
     */
    public static String convertExpression(String expression){
        if (StringUtils.isBlank(expression)) {
            return null;
        }
        String[] split = expression.split("\\.");
        if (split.length==0) {
            return null;
        }

        StringJoiner joiner=new StringJoiner("']['","$['","']");

        for (String str : split) {
            if ("$".equalsIgnoreCase(str)) {
                continue;
            }
            joiner.add(str);

        }

        return joiner.toString();
    }

 

posted @ 2023-04-23 20:16  yvioo  阅读(1191)  评论(0编辑  收藏  举报