用‘=’分割的json形式的字符串转为实体类

一般获取到的json格式的字符串,都是用冒号:分割的,用各类工具类都可以直接转为实体类,但是有不规范的json形式的字符串,则需要进行转换为正确的json格式,才可以用工具类进行转为实体类。

获取到的参数是这样的,没办法直接转为实体类,会报错

[{user={name=zhangsan, age=4}, {name=lisi, age=5}}]

代码如下:

import org.apache.commons.lang3.StringUtils;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;

	public static void main(String[] args) {
		// 拿到list Map形式的字符串
       String param = "[{user={name=zhangsan, age=4}, type=user}, {user={name=lisi, age=5}, type=user}]";
       if (StringUtils.isNotBlank(param.replace("[]",""))) {
           // 切割,拿到每一个map
           String[] split = param.substring(1, param.length() - 1).split("}, \\{");

           for (String user : split) {
               user = verify(user);
               String fieldValue = user.replaceAll("=", ":").replaceAll(":,", ": ,")
                       .replaceAll("(\\{|,)([^:]+)", "$1\"$2\"").replaceAll("([^:,\\}]+)(\\}|,)", "\"$1\"$2")
                       .replaceAll(" ", "");
               if (!"".equals(fieldValue)) {
               // 这里便拿到了每一个Json,可以转为实体类或者存储、处理等操作
                   JSONObject userJson = JSONUtil.parseObj(fieldValue).getJSONObject("user");
                   System.out.println(userJson);
               }
           }
       }
   }
    // 对于切割的字符串进行校验
    private static String verify(String jsonStr){
        if(!jsonStr.startsWith("{")){
            jsonStr = "{" + jsonStr;
        }
        if(!jsonStr.endsWith("}")){
            jsonStr = jsonStr + "}";
        }
        return jsonStr;
    }

结果:

{"name":"zhangsan","age":"4"}
{"name":"lisi","age":"5"}

这里是提供了一种解析思路,目前我也只想到了这一种处理方法,主要是利用字符串提供的replaceAll方法,如果有其他错误欢迎指正,也欢迎各位交流其他解决思路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值