Java中stream流将map转JSONObject
时间: 2023-08-01 16:10:31 浏览: 260
java json字符串转JSONObject和JSONArray以及取值的实例
可以使用Java 8中的Stream API来实现将Map转换为JSONObject。具体步骤如下:
1. 使用entrySet()方法将Map转换为Set<Map.Entry<K, V>>类型的集合。
2. 调用Stream API中的map()方法,将每个Map.Entry对象转换为JSONObject中的键值对。
3. 使用collect()方法将所有的JSONObject键值对收集到一个新的JSONObject对象中。
下面是一个示例代码:
```
import org.json.JSONObject;
import java.util.Map;
import java.util.stream.Collectors;
public class MapToJson {
public static JSONObject mapToJson(Map<String, Object> map) {
JSONObject json = map.entrySet()
.stream()
.map(entry -> {
Object value = entry.getValue();
if (value instanceof Map) {
value = mapToJson((Map) value);
} else if (value instanceof List) {
value = listToJson((List) value);
}
return new JSONObject().put(entry.getKey(), value);
})
.reduce(new JSONObject(), JSONObject::put, JSONObject::put);
return json;
}
public static JSONArray listToJson(List<Object> list) {
JSONArray json = list.stream()
.map(value -> {
if (value instanceof Map) {
value = mapToJson((Map) value);
} else if (value instanceof List) {
value = listToJson((List) value);
}
return value;
})
.collect(Collectors.toCollection(JSONArray::new));
return json;
}
}
```
这个代码可以将Map转换为JSONObject或JSONArray,具体使用方式可以根据需求进行调整。需要注意的是,在使用Stream API时,需要对Map中的值进行类型判断并递归处理,这样才能保证最终的JSONObject或JSONArray对象正确无误。
阅读全文