#javascript #string #jstree
#javascript #строка #jstree
Вопрос:
На моем сервере Java Servlet:
String javaJsonStr = "'Simple Root Node 1','Simple Root Node 2', {'text' : 'Root Node 3','children' : ['Child 1','Child 2']}";
request.setAttribute("jsonStrAttr", javaJsonStr );
На моей HTML-странице:
<script>
<%String javaStr = request.getAttribute("jsonStrAttr").toString();%>
var dataJson;
dataJson = new String("<%=javaStr%>");
$('#myTreeId').jstree({ 'core' : {
'data' : [ dataJson ]
} });
</script>
Поймите, я перепробовал много вариантов: без toString (), без кавычек в этой строке dataJson = new String("<%=javaStr%>");
, одинарные кавычки, escape-символы. Иногда я получаю только этот первый «Простой корневой узел 1». Но я никогда не получаю хорошее дерево узлов и дочерних узлов.
Подтекст: я просматриваю это в убогом браузере Eclipse localhost, но у меня нет оснований полагать, что в реальном браузере это будет работать лучше.
Ответ №1:
В ‘data’ вы передаете [‘некоторую строку из запроса’].
» не равно ‘ в json, чтобы иметь допустимый json: всегда используйте «
Вы должны найти способ создать действительный JSONArray на java (я действительно думаю, что есть много API, которые могут выполнить эту работу), в конце концов, вам нужно иметь json, подобный этому
[
"Simple Root Node 1 ",
"Simple Root Node 2",
{
"text" : "Root Node 3",
"children" : [
"Child 1",
"Child 2"
]
}
]
Затем постройте JSONArray и отправьте его.
Получите эту строку и преобразуйте ее в объект JavaScript с помощью JSON.parse :
const arrayFromJson= JSON.parse('<%=javaStr%>');
console.log("JavaScript array:", arrayFromJson});
// ... treat array and do stuff ...
Комментарии:
1. Мне трудно следовать вашему ответу. Единственное различие между вашей строкой и той, которую я показываю, заключается в том, что вы используете двойные кавычки там, где я использую одинарные кавычки. Остальная информация, которую вы предоставляете, кажется второстепенной для моего вопроса. Не могли бы вы, пожалуйста, уточнить.
2. Проблема в том, что вы передаете строку, не подлежащую кастомизации, как json. Вы должны отформатировать свою строку следующим образом: «[«Простой корневой узел 1», «Простой корневой узел 2», {«текст»: «Корневой узел 3», «дочерние элементы»: [«Дочерний элемент 1», «Дочерний элемент 2″]}]» в JAVA, затем передать ее и после JSON.разобрать строку, чтобы получить реальный объект JavaScript