#java #json #tree #nodes
#java #json #дерево #узлы
Вопрос:
Пытаюсь перевести этот список строк в формат json. Список строк выглядит как структура каталогов.
Хотелось бы, чтобы конечный результат был похож на
[{"name":"Cars","show":false,"nodes":[{"name":"Truck","show":false,"nodes":[{"name":"Regular","show":false,"nodes":[]},{"name":"4x4","show":false,"nodes":[{"name":"Lifted","show":false,"nodes":[]}]}]},{"name":"Jeep","show":false,"nodes":[{"name":"4x4","show":false,"nodes":[]}]},{"name":"Convertable","show":false,"nodes":[]}]}]
То, что у меня есть до сих пор, может выделить последний элемент, но я не уверен, как это помогает мне до сих пор
String[] li = new String[4];
li[0] = "Cars/Truck/Regular";
li[1] = "Cars/Truck/4x4/Lifted";
li[2] = "Cars/Jeep/4x4";
li[3] = "Cars/Convertable";
doAll(li);
public void doAll(String[] files) {
try {
for (String file : files) {
String[] f = file.split("/");
if (f.length>1) {
logger.info("directory:" file);
f = (String[]) ArrayUtils.removeElement(f, f[0]);
String temp = "";
for(String ff : f) temp=temp "/" ff;
temp = temp.replaceFirst("/", "");
doAll(new String[]{temp});
} else if(f.length==1){
logger.info("file:" file);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Комментарии:
1. Попробуйте использовать Jackson. Сопоставитель объектов в Jackson может помочь в том, чего вы пытаетесь достичь.
Ответ №1:
Почему бы вам не создать объект и не сгенерировать json из этого объекта? Вы можете создать класс для каждого типа объекта, который у вас есть в вашем json. Например, у вас может быть класс с именем node:
public class node() {
private String name;
private boolean show;
private node[] nodes;
//getters and setters
}
Затем вы можете установить свой объект со всеми данными вашего транспортного средства и использовать gson для генерации вашего json.
Gson gson = new Gson();
String json = gson.toJson(node);
Комментарии:
1. да, я понимаю эту часть. но где в пределах всего я мог бы поместить объект?
2. Если я правильно понимаю, я не думаю, что вам понадобится метод doAll(), если вы используете gson. Вы можете создать новый объект узла, например) Узел узел = новый узел (), а затем установить значения, например) узел.setName(«Автомобили») узел.setShow(false) и т.д…. затем используйте gson для генерации вашей строки json