< b >想改进这个问题?通过编辑此帖子更新问题,使其只关注一个问题。
我正在尝试将下面的对象转换为字符串数组
JSON对象
输入:
[
{
"name": "Pantry",
"childrenItems": [
{
"name": "Butter",
"childrenItems": [
{
"name": "Cream",
"childrenItems": []
}
]
},
{
"name": "Snack",
"childrenItems": []
}
]
},
{
"name": "Medicine",
"childrenItems": []
}
]
所需输出:
< code>[“餐具室-
我的POJO看起来像这样
@Data
public class CategoryTreeDto {
private String name;
private List<CategoryTreeDto> childrenItems;
}
如何使用 java 8 流 API 扁平嵌套类别的 JSON 对象。
我尝试使用递归和java 8 flatMap函数来展平和连接字符串,但没有按预期获得输出。
这是基于亲子关系,因为食品储藏室是父母,孩子是黄油,黄油的孩子是奶油,食品储藏室还有一个孩子是零食。
看起来很简单的<code>dfs</code>算法:
java prettyprint-override">public static List<String> dfs(List<CategoryTreeDto> items) {
return dfs(items, new LinkedList<>(), new ArrayList<>());
}
private static List<String> dfs(List<CategoryTreeDto> items,
Deque<String> path,
List<String> res) {
if (items == null || items.isEmpty()) {
if (!path.isEmpty()) {
res.add(String.join("->", path));
}
} else {
for (CategoryTreeDto item : items) {
path.addLast(item.getName());
dfs(item.getChildren(), path, res);
path.removeLast();
}
}
return res;
}
我认为对于这个特定任务,递归比 java 流简单得多。
public class Test {
public static void main(String[] args) throws IOException {
List<CategoryTreeDto> list = //get data
List<String> result = new ArrayList<>();
for (CategoryTreeDto dto : list) {
traverse(dto, dto.getName(), result);
}
System.out.println(result);
}
private static void traverse(CategoryTreeDto dto, String current, List<String> result) {
List<CategoryTreeDto> children = dto.getChildrenItems();
if (children.isEmpty()) {
result.add(current);
return;
}
for (CategoryTreeDto childDto : dto.getChildrenItems()) {
String next = current + "->" + childDto.getName();
traverse(childDto, next, result);
}
}
}
先深入,直到没有更多的孩子,同时建立道路。当没有更多的子项时,将路径添加到结果并返回(这是递归的结束)。
指纹
[Pantry->Butter->Cream, Pantry->Snack, Medicine]
以你为例。
我正在尝试将下面的对象转换为字符串数组 JSON对象 输入: 所需输出:
我正在尝试将来自我的数据库的对象的平面数组转换为需要嵌套结构才能管理可扩展子行的react-table。 我已经制作了一个代码沙盒,它非常简单: https://codesandbox.io/s/tender-chatterjee-kdssi?file=/src/App.js 基本上,我的原始数据结构如下: 我想把它转换成这个结构: 我已经尝试了一些递归的方法,但是他们留下了一些选择,所以我很乐意
< code>[[{header=C,value=dsd},{header=D,value=test},{header=E,value=e},{header=F,value=hhh},{header=G,value=ghgh}]] 上面是JsonLists数组的数组,我需要将外部数组扁平化为JsonLists的内部数组。 我最终也只会从JsonList中获取值,并将这些值放入它自己的单独数组中:
我正在尝试使用来部分地反序列化模型,因此其中一个属性被读取为包含原始JSON的字符串。 示例代码 应该生成模型,其中属性将原始JSON中的Info对象作为字符串包含: 它不能开箱即用并抛出异常: System.Text.Json.JsonException:--- 到目前为止我尝试了什么: 并将其应用于模型中 并将选项添加到 尽管如此,它还是抛出了相同的异常: System.Text.Json.J
问题内容: 如我们所知,通过使用方法将数组展平 那么如何将此数组展平到? 问题答案: 这是递归的一种替代方法,并且应接受任何深度级别,以避免堆栈溢出。
字符串的扩展 ES6中的字符串扩展,用得少,而且逻辑相对简单。如下: includes(str):判断是否包含指定的字符串 startsWith(str):判断是否以指定字符串开头 endsWith(str):判断是否以指定字符串结尾 repeat(count):重复指定次数 举例如下: let str = 'abcdefg'; console.log(str.includes(