通过 stream将jsonarray 转map
时间: 2023-08-03 11:04:57 浏览: 524
可以通过Java 8的Stream API来将一个JsonArray转换为Map。假设JsonArray中的每个元素都是一个JsonObject,其中包含一个名为“key”的属性和一个名为“value”的属性,可以按照以下方式进行转换:
```
JsonArray jsonArray = ...; // 从某处获取JsonArray
Map<String, JsonObject> map = jsonArray.stream()
.map(JsonValue::asJsonObject)
.collect(Collectors.toMap(json -> json.getString("key"), Function.identity()));
```
这将返回一个Map,其中键是每个JsonObject中名为“key”的属性的值,值是对应的JsonObject。请注意,如果JsonArray中有多个元素具有相同的“key”值,则只有一个元素将包含在Map中。
相关问题
JSONArray jsonArray 转 map
要将JSONArray jsonArray转换为Map,有三种方法可以选择:
第一种方法是使用toJavaList方法将JSONArray转换为List<JSONObject>,然后使用stream和collectors.toMap方法将List转换为Map。具体代码如下:
JSONArray jsonArray= new JSONArray(); //填充初始数据,此处过程省略
List<JSONObject> jsonObjectList = jsonArray.toJavaList(JSONObject.class);
Map<Integer, String> map = jsonObjectList.stream().filter(Objects::nonNull).collect(Collectors.toMap(item -> item.getInteger("flagType"), item -> item.getString("flagIcon")));
第二种方法是先创建一个空的HashMap<Integer, String>,然后使用forEach方法遍历JSONArray,将每个JSONObject中的flagType和flagIcon添加到HashMap中。具体代码如下:
Map<Integer, String> flagIconMap = new HashMap<>();
JSONArray jsonArray= new JSONArray(); //填充初始数据,此处过程省略
if (jsonArray != null && !jsonArray.isEmpty()) {
jsonArray.forEach(object -> {
if (object == null) {
return;
}
JSONObject jsonObject = (JSONObject) object;
if (jsonObject.getInteger("flagType") == null) {
return;
}
flagIconMap.put(jsonObject.getInteger("flagType"),jsonObject.getString("flagIcon"));
});
}
第三种方法是使用stream和collectors.toMap方法直接将JSONArray转换为Map。具体代码如下:
JSONArray jsonArray= new JSONArray(); //填充初始数据,此处过程省略
Map<Integer, String> map = jsonArray.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(
object -> {
JSONObject item = (JSONObject) object;
return item.getInteger("flagType");
},
object -> {
JSONObject item = (JSONObject) object;
return item.getString("flagIcon");
}
));
以上是三种将JSONArray jsonArray转换为Map的方法,你可以根据自己的需求选择其中一种方法来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [JSONArray转Map的三种实现方式](https://blog.csdn.net/weixin_43075027/article/details/109533803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
JSONArray 转map
JSONArray可以通过多种方式转换成Map。其中一种方式是使用流操作,通过filter过滤掉空对象,并使用Collectors.toMap方法将flagType作为键,flagIcon作为值,来创建Map。代码示例如下:
第一种方式:
```
JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
List<JSONObject> jsonObjectList = jsonArray.toJavaList(JSONObject.class);
Map<Integer, String> map = jsonObjectList.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(item -> item.getInteger("flagType"), item -> item.getString("flagIcon")));
```
第二种方式:
```
Map<Integer, String> flagIconMap = new HashMap<>();
JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
if (jsonArray != null && !jsonArray.isEmpty()) {
jsonArray.forEach(object -> {
if (object == null) {
return;
}
JSONObject jsonObject = (JSONObject) object;
if (jsonObject.getInteger("flagType") == null) {
return;
}
flagIconMap.put(jsonObject.getInteger("flagType"),jsonObject.getString("flagIcon"));
});
}
```
第三种方式:
```
JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
Map<Integer, String> map = jsonArray.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(
object -> {
JSONObject item = (JSONObject) object;
return item.getInteger("flagType");
},
object -> {
JSONObject item = (JSONObject) object;
return item.getString("flagIcon");
}
));
```
以上是三种将JSONArray转换成Map的方式。具体选择哪种方式取决于你的需求和代码结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [JSONArray转Map的三种实现方式](https://blog.csdn.net/weixin_43075027/article/details/109533803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文