过滤 Json 数组到自定义数据 JAVA
Filter Json Array to custom Data JAVA
这是我第一次使用 json,我在尝试过滤数组时遇到了困难我正在尝试获取所有值文档 ID /Page
datalist = {"DocA|1", "DocA|2, "DocA|3, "DocA|4,, "DocB|1, "DocB|3" , "DocC|1"}
JSONArray jsonObject = json.getJSONArray("datalist");
如何创建过滤值列表?
DocA 第 1、2、3、4 页
DocB 第 1 页
DocC 页面
如果需要将String的输入数组转换为文档ID到页面ID列表的指定映射,可以使用Java 8 Stream API实现如下:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String[] input = {"DocA|1", "DocA|2", "DocA|3", "DocA|4", "DocB|1", "DocB|3", "DocC|1"};
Map<String, List<Integer>> data = Arrays.stream(input) // get stream of Strings
.map(s -> s.split("\|")) // split each string into array using | delimiter
.collect(Collectors.groupingBy(
arr -> arr[0], // use documentId as key
Collectors.mapping(arr -> Integer.parseInt(arr[1]), Collectors.toList())) // parse page IDs and collect them to list
);
System.out.println(data);
}
}
输出:
{DocA=[1, 2, 3, 4], DocB=[1, 3], DocC=[1]}
这是我第一次使用 json,我在尝试过滤数组时遇到了困难我正在尝试获取所有值文档 ID /Page
datalist = {"DocA|1", "DocA|2, "DocA|3, "DocA|4,, "DocB|1, "DocB|3" , "DocC|1"}
JSONArray jsonObject = json.getJSONArray("datalist");
如何创建过滤值列表? DocA 第 1、2、3、4 页 DocB 第 1 页 DocC 页面
如果需要将String的输入数组转换为文档ID到页面ID列表的指定映射,可以使用Java 8 Stream API实现如下:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String[] input = {"DocA|1", "DocA|2", "DocA|3", "DocA|4", "DocB|1", "DocB|3", "DocC|1"};
Map<String, List<Integer>> data = Arrays.stream(input) // get stream of Strings
.map(s -> s.split("\|")) // split each string into array using | delimiter
.collect(Collectors.groupingBy(
arr -> arr[0], // use documentId as key
Collectors.mapping(arr -> Integer.parseInt(arr[1]), Collectors.toList())) // parse page IDs and collect them to list
);
System.out.println(data);
}
}
输出:
{DocA=[1, 2, 3, 4], DocB=[1, 3], DocC=[1]}