【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);

到此,就完成了,看到网上相关的文章感觉都比较繁琐,我这里整理并记录一下。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中,可以使用fastjson库来解析JSON数据。下面是一个示例代码,演示如何使用fastjson解析JSON数据: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class JsonParser { public static void main(String[] args) { // JSON字符串 String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; // 解析为JSONObject对象 JSONObject jsonObject = JSON.parseObject(jsonString); // 获取JSONObject中的属性值 String name = jsonObject.getString("name"); int age = jsonObject.getIntValue("age"); String city = jsonObject.getString("city"); System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("City: " + city); // 解析为Java对象 User user = JSON.parseObject(jsonString, User.class); System.out.println("Name: " + user.getName()); System.out.println("Age: " + user.getAge()); System.out.println("City: " + user.getCity()); // JSON数组字符串 String jsonArrayString = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Alice\", \"age\":25}]"; // 解析为JSONArray对象 JSONArray jsonArray = JSON.parseArray(jsonArrayString); // 遍历JSONArray for (int i = 0; i < jsonArray.size(); i++) { JSONObject obj = jsonArray.getJSONObject(i); String objName = obj.getString("name"); int objAge = obj.getIntValue("age"); System.out.println("Object " + (i+1) + ":"); System.out.println("Name: " + objName); System.out.println("Age: " + objAge); } } } class User { private String name; private int age; private String city; // 省略getter和setter方法 } ``` 在这个示例代码中,我们首先将JSON字符串解析为JSONObject对象,然后使用`getString()`和`getIntValue()`等方法获取JSON中的属性值。另外,我们还演示了如何将JSON字符串解析为Java对象,以及如何解析JSON数组。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值