前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Json格式的字符串修改对应Key的Value值,并保存到原json字符串中

Json格式的字符串修改对应Key的Value值,并保存到原json字符串中

作者头像
掉发的小王
发布2022-07-11 16:11:34
2.3K0
发布2022-07-11 16:11:34
举报
文章被收录于专栏:小王知识分享

一、前言

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

二、需求确认

简单说就是:把

代码语言:javascript
复制
[{"childs":[{"address":"山东","phone":"12344444"}],
"password":"123","username":"wang"}]

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

代码语言:javascript
复制
[{"childs":[{"address":"北京","phone":"21212121"},
{"address":"山东","phone":"12344444"}],"password":"123","username":"wang"}]

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

三、导入Maven依赖

代码语言:javascript
复制
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
</dependency>

四、测试样例

我们先准备好json字符串:

代码语言:javascript
复制
{"childs":[{"address":"北京","phone":"21212121"},
{"address":"山东","phone":"12344444"}],"password":"123","username":"wang"}

直接测试:

代码语言:javascript
复制
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;

    }
}

测试结果:

代码语言:javascript
复制
{"password":"123","childs":[{"address":"北京","phone":"21212121"},
{"address":"山东","phone":"12344444"},
{"address":"青岛市","phone":"110"}],"username":"wang"}
在这里插入图片描述
在这里插入图片描述

五、总结

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

代码语言:javascript
复制
String newString = StringEscapeUtils.unescapeJson("要被转化的json字符串");

Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、需求确认
  • 三、导入Maven依赖
  • 四、测试样例
  • 五、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档