【fastJson】java 使用fastjson修改多层嵌套的Objectjson数据
一、前言
今天遇到一个需求,使用的是alibaba-fastjson
,操作是拿到多层嵌套json
数据后,修改对应key
的值,然后重新存入到json
当中。
二、准备
json的数据格式如下:
我们要拿出 temp_realtime_features_monitor_log_39200
-> settings
-> index
-> number_of_shards
的值,然后更新修改,并重新存入到json
中。
{
"temp_realtime_features_monitor_log_39200": {
"settings": {
"index": {
"lifecycle": {
"name": "hot_ilm_360"
},
"search": {
"slowlog": {
"level": "trace",
"threshold": {
"fetch": {
"warn": "5s",
"trace": "500ms",
"debug": "800ms",
"info": "1s"
},
"query": {
"warn": "10s",
"trace": "500ms",
"debug": "2s",
"info": "5s"
}
}
}
},
"refresh_interval": "15s",
"indexing": {
"slowlog": {
"source": "3000"
}
},
"number_of_shards": "5",
"number_of_replicas": "1"
}
},
"mappings": {
"properties": {
"fname": {
"type": "keyword"
},
"fvalue": {
"type": "float"
},
"create_time": {
"type": "date"
},
"resource_id": {
"type": "keyword"
},
"logid": {
"type": "keyword"
}
}
},
"aliases": {
"realtime_features_monitor_log": {}
},
"index_patterns": ["realtime_features_monitor_log*"],
"order": 1
}
}
三、实施
其实思路是很简单的,我看网上都是一层一层取出来,然后在put进去,我们这个不需要,直接get到我们想要修改的那一层,然后fluentPut
即可。
jsonObject.getJSONObject("temp_realtime_features_monitor_log_39200")
.getJSONObject(Constants.SETTINGS)
.getJSONObject(Constants.INDEX).fluentPut(Constants.NUMBER_OF_SHARDS, "1");
System.out.println(jsonObject);
到此,就完成了,看到网上相关的文章感觉都比较繁琐,我这里整理并记录一下。