[英]get a dynamic sub array from JSON using java
I am trying to read json using java which contains data of a menu created by Jquery Plugin.我正在尝试使用 java 读取 json,其中包含由 Jquery 插件创建的菜单数据。
[
{
"text": "Home",
"href": "http://home.com",
"icon": "fas fa-home",
"target": "_top",
"title": "My Home"
},
{
"text": "Option1",
"href": "",
"icon": "fas fa-map-marker",
"target": "_self",
"title": "",
"children": [
{
"text": "Option1.1",
"href": "",
"icon": "fas fa-search",
"target": "_self",
"title": "",
"children": [
{
"text": "Option1.1.1",
"href": "",
"icon": "fas fa-plug",
"target": "_self",
"title": "",
"children": [
{
"text": "Option1.1.1.1",
"href": "",
"icon": "fas fa-filter",
"target": "_self",
"title": ""
}
]
}
]
},
{
"text": "Option1.2",
"icon": "fab fa-amazon-pay",
"href": "",
"target": "_self",
"title": "",
"children": [
{
"text": "Option1.2.1",
"icon": "empty",
"href": "",
"target": "_self",
"title": ""
}
]
}
]
},
{
"text": "Option2",
"icon": "fab fa-adversal",
"href": "",
"target": "_self",
"title": ""
}
]
Visual representation of this json will be like此 json 的视觉表示将类似于
Children array is created dynamically.子数组是动态创建的。 It can be in every object.
它可以在每个 object 中。 Is there a way to read the children array which is inside of other children arrays?
有没有办法读取其他孩子 arrays 内部的孩子数组?
I'm using json-simple to read the json file and my current code is:我正在使用 json-simple 读取 json 文件,我当前的代码是:
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("C:\\Users\\ryuuk\\Desktop\\data.json"));
JSONArray jsonArray = (JSONArray) obj;
for (Iterator it = jsonArray.iterator(); it.hasNext();) {
JSONObject object = (JSONObject) it.next();
System.out.println(" <li><a href=\"#\">" + object.get("text") + "</a>");
if (object.containsKey("children")) {
System.out.println("<ul>");
JSONArray achil = (JSONArray) object.get("children");
for (int i = 0; i < achil.size(); i++) {
JSONObject objectx = (JSONObject) achil.get(i);
System.out.println(" <li><a href=\"#\">" + objectx.get("text") + "</a>");
}
System.out.println("</ul>");
}
}
Which will output this:其中将 output 这个:
<li><a href="#">Home</a>
<li><a href="#">Option1</a>
<ul>
<li><a href="#">Option1.1</a>
<li><a href="#">Option1.2</a>
</ul>
<li><a href="#">Option2</a>
How can I read those children arrays in Option1.1.1 ?我如何阅读 Option1.1.1 中的那些孩子arrays ?
after few hours of trying i was able to comeup with a code that works经过几个小时的尝试,我能够想出一个有效的代码
output output
<li>
<a href="#">Programming</a>
<ul>
<li><a href="#">C++</a> </li>
<li><a href="#">C#</a> </li>
<li><a href="#">Java</a> </li>
<li>
<a href="#">Web Development</a>
<ul>
<li><a href="#">PHP</a> </li>
<li><a href="#">Ruby</a> </li>
<li><a href="#">Javascript</a> </li>
</ul>
</li>
<li><a href="#">Python</a> </li>
</ul>
</li>
<li>
<a href="#">OS</a>
<ul>
<li><a href="#">Windows</a> </li>
<li><a href="#">Macintosh</a> </li>
<li><a href="#">Linux</a> </li>
</ul>
</li>
<li>
<a href="#">Projects</a>
<ul>
<li><a href="#">Android</a> </li>
<li><a href="#">iOS</a> </li>
<li><a href="#">Web</a> </li>
<li><a href="#">Windows</a> </li>
</ul>
</li>
<li><a href="#">About</a> </li>
jsp code jsp代码
<%
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("C:\\Users\\ryuuk\\Desktop\\data.json"));
JSONArray jsonArray = (JSONArray) obj;
out.write(new TagMaker().generateMenu(jsonArray));
%>
class - class -
public class TagMaker {
static String menuString = "";
public String generateMenu(JSONArray obj) {
JSONArray jsonArray = (JSONArray) obj;
for (Iterator it = jsonArray.iterator(); it.hasNext();) {
JSONObject object = (JSONObject) it.next();
menuString += " <li><a href=\"#\">" + object.get("text") + "</a>";
if (checkforChildren(object.get("children"))) {
looparray((JSONArray) object.get("children"));
}
menuString += " </li>";
}
System.out.println(menuString);
return menuString;
}
public boolean checkforChildren(Object get) {
return get != null;
}
public String looparray(JSONArray jsonArray) {
menuString += "<ul>";
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject get = (JSONObject) jsonArray.get(i);
menuString += " <li><a href=\"#\">" + get.get("text") + "</a>";
if (checkforChildren(get.get("children"))) {
looparray((JSONArray) get.get("children"));
}
menuString += " </li>";
}
menuString += "</ul>";
return menuString;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.