递归处理未知类型的json

public static void putAllIdToMap(String json, String name, String id) {
		
		String value = "";
		String key = "";
		Map<String, Object> map = (Map<String, Object>)JsonUtils.jsonToMap(json);
		for (Entry<String, Object> key1 : map.entrySet()) {
			JsonParser parser = new JsonParser();
			JsonElement jsonElement = parser.parse(JsonUtils.object2Json(key1.getValue()));
			if (jsonElement.isJsonObject()) {
				JsonObject jsonObject = jsonElement.getAsJsonObject();
				String jsonstr = jsonObject.toString();
				putAllIdToMap(jsonstr, name, id);
			} else if (jsonElement.isJsonArray()) {
				List<Map<String, Object>> liatMap = (List<Map<String, Object>>)key1.getValue();
				for (Map<String, Object> map2 : liatMap) {
					String jsonstr = JsonUtils.object2Json(map2);
					putAllIdToMap(jsonstr, name, id);
				}
			} else {
				if (key1.getKey().equals(name)) {
					if (!"".equals(key1.getValue()) && null != key1.getValue()) {
						key = key1.getValue().toString();
					}
					
				}
				if (key1.getKey().equals(id)) {
					if (!"".equals(key1.getValue()) && null != key1.getValue()) {
						value = key1.getValue().toString();
					}
				}
				if (StringUtils.isNotEmpty(key) && StringUtils.isNotEmpty(value)) {
					idMap.put(key, value);
					break;
				}
			}
		}
	}

 注:根据name和ID,找出以name为key id的值为value的键值对,由于获取到的json可能是空、Object、JsonArray等,所以先判断,在使用递归解决多层嵌套问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值