Передача JSON String на всем пути от Java до JSTree, которая портит интерпретацию строки JSTree - PullRequest
1 голос
/ 29 марта 2019

На моем сервере сервлетов Java:

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>

И это то, что я получаю. enter image description here

Поймите, я пробовал много вариантов: без toString (), без кавычек в этой строке dataJson = new String("<%=javaStr%>");, одинарные кавычки, экранирующие символы. Иногда я получаю только первый «Простой корневой узел 1». Но я никогда не получаю хорошее дерево узлов и дочерних узлов.

Понимаю, что я просматриваю это в отвратительном локальном браузере Eclipse, но у меня нет оснований полагать, что в реальном браузере все пойдет лучше.

1 Ответ

0 голосов
/ 29 марта 2019

В 'data' вы передаете ['некоторую строку из запроса'].

"не равно" в json, чтобы иметь действительный json: всегда используйте "

YouЯ должен найти способ построить правильный 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 ...

...