小编今天在工作工程中,遇到了一个处理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为例,虽然他有风险,但是小编还是喜欢用这个!
<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();