一、前言

小编今天在工作工程中,遇到了一个处理json字符串的问题,经过半小时的测试,最终解决了此问题!记录一下,为后来人铺路。
小编先说一下需求哈:
我们要把json字符串中的指定key的value修改并重新返回一个修改后的json字符串!

二、需求确认

简单说就是:把

[{"childs":[{"address":"山东","phone":"12344444"}],
"password":"123","username":"wang"}]

childs集合里新增一条,然后再替换一下原来的json字符串

[{"childs":[{"address":"北京","phone":"21212121"},
{"address":"山东","phone":"12344444"}],"password":"123","username":"wang"}]

现在大家知道我们的目的了吧!那就开始解决问题!!!我们以FastJson为例,虽然他有风险,但是小编还是喜欢用这个!

三、导入Maven依赖

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
</dependency>

四、测试样例

我们先准备好json字符串:

{"childs":[{"address":"北京","phone":"21212121"},
{"address":"山东","phone":"12344444"}],"password":"123","username":"wang"}

直接测试:

public class JsonTest {

    public static void main(String[] args) {

        Json json = new Json();
        json.setPassword("123");
        json.setUsername("wang");
        List<Json.Child> childs = new ArrayList<>();
        Json.Child child = new Json.Child();
        child.setAddress("山东");
        child.setPhone("12344444");
        Json.Child child2 = new Json.Child();
        child2.setAddress("北京");
        child2.setPhone("21212121");
        childs.add(child2);
        childs.add(child);
        json.setChilds(childs);
		// 准备数据
        String jsonString = JSON.toJSONString(json);
        System.out.println(jsonString);

        String jsonEdit = jsonEdit(jsonString);
        System.out.println(jsonEdit);

    }

    private static String jsonEdit(String json){
        // 首先转化为jsonObject对象,为了后面我们更新key对应的value做准备
        JSONObject jsonObject = JSONObject.parseObject(json);
        // 把json里的childs拿出来新增一个对象
        String childs = JSONObject.parseObject(json).getString("childs");
        List<Json.Child> jsonList =  JSON.parseArray(childs, Json.Child.class);

        Json.Child child = new Json.Child();
        child.setPhone("110");
        child.setAddress("青岛市");
        jsonList.add(child);

        // 把修改后的内容替换原来的value
        jsonObject.put("childs",jsonList);
        String jsonString = jsonObject.toString();
        return jsonString;

    }
}

测试结果:

{"password":"123","childs":[{"address":"北京","phone":"21212121"},
{"address":"山东","phone":"12344444"},
{"address":"青岛市","phone":"110"}],"username":"wang"}

在这里插入图片描述

五、总结

这样就完成了哈,小编在测试中多toString()了一下,就出现多\和"找了好一会,分享一个去的方法,不是使用replace替换的!不过已经过时了,大家有好的方法也可以评论区留言哈

String newString = StringEscapeUtils.unescapeJson("要被转化的json字符串");

小编这么用心分享自己的心得,还不一键三连!我们来日方长呀!!!


有缘人才可以看得到的哦!!!

点击访问!小编自己的网站,里面也是有很多好的文章哦!

Q.E.D.