作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的 JSON 响应:
[
{
"id": 5,
"user_id": 1,
"message": "Hello",
"children": [
{
"id": 7,
"user_id": 2,
"message": "Hi",
"children": [
{
"id": 8,
"user_id": 3,
"message": "Hey",
"children": [
]
}
]
}
]
},
{
"id": 6,
"user_id": 4,
"message": "Ahoy",
"children": [
]
}
]
我已经创建了模型 ( Message.java
)。调用getChildren()
即可找回 child 。响应保存在列表 List<Message> messages
中.
如何循环遍历此 JSON 数组以获取每个子项的内容,直到没有子项为止?如果没有递归函数,这可能吗?
最佳答案
我假设您有列表消息:
以下是如何使用递归和迭代方式浏览所有子项:
List<Message> messages = //you already have that
System.out.println("Using Recusion : ");
for (Message message : messages) {
printMessage(message);
}
System.out.println("Using Iterative : ");
Stack<Message> stack = new Stack<>();
stack.addAll(messages);
while (!stack.empty()) {
Message item = stack.pop();
System.out.println(item.getId() + ":" + item.getUser_id() + ":" + item.getMessage());
for (Message chidren : item.getChildren()) {
stack.push(chidren);
}
}
这是 printMessage 方法:
public static void printMessage(Message pmessage) {
System.out.println(pmessage.getId() + ":" + pmessage.getUser_id() + ":" + pmessage.getMessage());
for (Message message : pmessage.getChildren()) {
printMessage(message);
}
}
关于java - 循环遍历嵌套 JSON 数组,获取具有相同对象模型的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918041/
我是一名优秀的程序员,十分优秀!