jsonobject修改key的值_任意替换(修改)JSON数据的key、values值

该博客介绍了一种使用阿里巴巴的FastJSON库来修改JSON对象中键和值的方法。通过创建键和值的替换规则映射,然后递归遍历JSON对象,实现了JSON数据的动态替换。示例代码展示了如何将JSON字符串转换为对象,然后根据给定的映射替换键和值,并打印出替换后的JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码部分

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

public class JSONUtil_1021 {

public static void main(String[] args) {

//输入的json字符串

String jsonStr ="{\"user\":{\"name\":\"张三\",\"sex\":\"男\",\"hobby\":[{\"motion\":\"足球\",\"desc\":\"任性\"},{\"game\":\"英雄联盟\",\"desc\":\"就是这么任性\"}]}}";

System.out.println("原格式的json 》》"+jsonStr);

//替换对应的key的规则

Map keyMap =new HashMap<>();

keyMap.put("desc", "描述");

//替换对应的value的规则

Map valueMap =new HashMap<>();

valueMap.put("男", "0");

valueMap.put("女", "1");

JSONObject jsonObj = JSONUtil_1021.changeJsonObj(JSONObject.parseObject(jsonStr),keyMap,valueMap);

System.out.println("换值结果 》》 " + jsonObj.toString());

}

/**

* 实现json数据按照替换规则进行替换

* @param jsonObj  原始json数据

* @param keyMap  key替换规则

* @param valueMap value替换规则

* @return 替换后的josn数据

*/

public static JSONObjectchangeJsonObj(JSONObject jsonObj,Map keyMap,Map valueMap) {

JSONObject resJson =new JSONObject();

Set keySet = jsonObj.keySet();

for (String key : keySet) {

//改变json数据的key值

String resKey = keyMap.get(key) ==null ? key : keyMap.get(key);

try {

JSONObject jsonobj1 = jsonObj.getJSONObject(key);

resJson.put(resKey, changeJsonObj(jsonobj1, keyMap,valueMap));

}catch (Exception e) {

try {

JSONArray jsonArr = jsonObj.getJSONArray(key);

resJson.put(resKey, changeJsonArr(jsonArr, keyMap,valueMap));

}catch (Exception x) {

//不改变value值: resJson.put(resKey, jsonObj.get(key));

//改变json的values值

resJson.put(resKey, jsonvalues(jsonObj.get(key).toString(),valueMap));

}

}

}

return resJson;

}

//替换Json的value值

public static Stringjsonvalues(String oldValue,Map valueMap){

String resValue = valueMap.get(oldValue) ==null ? oldValue : valueMap.get(oldValue);

return resValue;

}

public static JSONArraychangeJsonArr(JSONArray jsonArr,Map keyMap,Map valueMap) {

JSONArray resJson =new JSONArray();

for (int i =0; i < jsonArr.size(); i++) {

JSONObject jsonObj = jsonArr.getJSONObject(i);

resJson.add(changeJsonObj(jsonObj, keyMap,valueMap));

}

return resJson;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值