|
|
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Есть веб-приложение на Java, использует Spring MVC. Клиент через Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. запрашивает по id некий невалидный текст, который является частью Hightchart'от. Пример строки: Код: powershell 1. 2. 3. 4. 5. 6. Естественно без переносов, сплошным текстом. Я пробовал руками править его так, чтобы получить валидный JSON и тогда он отлично кладется на клиента формирует график как нужно. При этом можно при желании отдельно перед построением графика изменить что-то в данных. Как видно из кода выше, я тупо прикрутил по краям куски кода, которые вместе образовали строку исполняя которую через eval() график и строится. Но! Почитал про eval, про его потенциальную опасность (пока не представляю как именно можно его использовать, но ведь пишут в интернетах :)). Да и при таком подходе не могу воздействовать на данные графика, менять и прочее. А теперь вопросы, с учетом того, что на JS я пытаюсь писать примерно дней 5 и очень много не знаю: 1. Как можно помимо $ajax отправить на клиента запрос передав айди и получить от него данные? Не используя какие-то большие фреймворки, а простые популярные библиотеки типа jquery. 2. Как еще можно внедрить свой код внутрь метода так, чтобы строка выполнилась как код? Или лишь eval и всё тут? Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 16:29 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Nixic, Почитайте про JSON. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 17:25 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Nixic, json разбирается при помощи JSON.parse() результат передаётся параметром в Highcharts.chart без всякого eval ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 18:12 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
hVosttNixic, Почитайте про JSON. Я понимаю что такое есть формат данных json и для чего он нужен, я понимаю, когда он валиден и когда нет, просто посмотрев на строку. Еще умею пользоваться онлайн валидаторами для него. И я же написал, что приводил его к нормальному/валидному виду. В данном случае вопрос немного в другом. Что мне еще про json нужно прочитать? :) ИзопропилNixic, json разбирается при помощи JSON.parse() результат передаётся параметром в Highcharts.chart без всякого eval То что все везде может передаваться это понятно. Каким параметром и через что, какими механизмами? Я не прошу прямо код готовый с обоих сторон, на клиенте и на сервере, мне хотя бы названия/направления. Вот по Java я почти все стандартные вещи знаю, а вот с JS не работал ранее, мне сложно ориентироваться в тех вещах, которые человеку с опытом в пару месяцев и более кажутся самими собой разумеющимися. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 19:45 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicЧто мне еще про json нужно прочитать? :) Прочитайте хотя бы отличие JSON от JS, прежде чем натравливать на него eval. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 19:50 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicТо что все везде может передаваться это понятно. Каким параметром и через что, какими механизмами? Я не прошу прямо код готовый с обоих сторон, на клиенте и на сервере, мне хотя бы названия/направления. Вот по Java я почти все стандартные вещи знаю, а вот с JS не работал ранее, мне сложно ориентироваться в тех вещах, которые человеку с опытом в пару месяцев и более кажутся самими собой разумеющимися. Изопропил же написал чёрным по белому: JSON.parse() — что ещё нужно? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 19:51 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
hVosttNixicТо что все везде может передаваться это понятно. Каким параметром и через что, какими механизмами? Я не прошу прямо код готовый с обоих сторон, на клиенте и на сервере, мне хотя бы названия/направления. Вот по Java я почти все стандартные вещи знаю, а вот с JS не работал ранее, мне сложно ориентироваться в тех вещах, которые человеку с опытом в пару месяцев и более кажутся самими собой разумеющимися. Изопропил же написал чёрным по белому: JSON.parse() — что ещё нужно? :) А я черным по белому написал, что json невалидный, я не настолько туп чтобы не погуглить и не посмотреть примеры $ajax и не почитать про ее функции и попробовать выводить в консоль данные, не подебажить в хроме что приходит в респонсе и прочее. Вопрос, повторюсь в другом, а не в том, чем же парсить, а чем не парсить строки. Ну хорошо-хорошо, я погуглил специально и вот ответ на ваш вопрос про то, чем отличается JavaScript от Json: JavaScript (/ˈdʒɑːvɑːˌskrɪpt/; аббр. JS) — прототипно-ориентированный сценарный язык программирования. Является реализацией языка ECMAScript (стандарт ECMA-262). https://ru.wikipedia.org/wiki/JavaScript JSON (JavaScript Object Notation) - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript, определенного в стандарте ECMA-262 3rd Edition - December 1999. JSON - текстовый формат, полностью независимый от языка реализации, но он использует соглашения, знакомые программистам C-подобных языков, таких как C, C++, C#, Java, JavaScript, Perl, Python и многих других. Эти свойства делают JSON идеальным языком обмена данными. http://json.org/json-ru.html Прямо по первой ссылке на стековерфлоу нашлось. Уж не знаю, что вы к нему так прицепились :)) Бедный джейсон)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 20:50 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Nixic Код: javascript 1. 2. так делать категорически не следует, только не надо нервничать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 20:53 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
ИзопропилNixic Код: javascript 1. 2. так делать категорически не следует, только не надо нервничать да я понимаю(много где пишут что это дыра, но я пока не поискал как именно это можно использовать в примерах), вот и думаю, как мне быть, альтернативного способа нет? Без того чтобы не указывать БДешнику формировать в базе валидные Json'ы и без проблема аяксом их разбирать на составляющие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 20:55 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Да, тут еще такое условие я забыл указать. Если бы я сам обращался к полям БД я бы без проблем собрал нужный валидный json и работал бы с ним красиво. А здесь в БД есть вьюхи, в которых есть поля, где содержаться уже сформированные данные для Hightcharts. Вот и извращаемся как можем. А с учетом того, что я только в прошлый понедельник приступил к написанию чего-то на JS и про jquery лишь слышал (хоть и уже на протяжении лет эдак 7-ми), то при этом мне сложновато оценить задачу в целом и решить, "пинать" БДэшника с руководителями, чтобы меняли формат, или я чего-то не знаю, не вижу и туплю. Вот в этом всего лишь и вся загвоздка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 21:00 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Nixic, NixicКаким параметром и через что, какими механизмами? Код: sql 1. какой к чёрту eval ? (для eval ещё с кавычками разбираться) NixicБез того чтобы не указывать БДешнику формировать в базе валидные Json'ы их не в базе, а при получении данных из базы формируют на веб сервере(за исключением типа данных json - эти могут и в базе лежать) а для передачи от сервера броузеру стандартных вариантов немного - json и xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 21:21 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicА здесь в БД есть вьюхи, в которых есть поля, где содержаться уже сформированные данные для Hightcharts. resultset преобразовать в json и отдать лёгким движением бэкенд на чём ? не СУБД же напрямую броузеру данные отдаёт )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 21:24 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Изопропилих не в базе, а при получении данных из базы формируют на веб сервере так оно, но тут не от меня зависит, сцепляют из нескольких запросов результаты и подают все из вьюхи в виде JS кода как параметры Hightchart. Изопропила для передачи от сервера броузеру стандартных вариантов немного - json и xml Да, это формат данных туда сюда передающихся, я понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 21:41 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
ИзопропилNixicА здесь в БД есть вьюхи, в которых есть поля, где содержаться уже сформированные данные для Hightcharts. resultset преобразовать в json и отдать лёгким движением бэкенд на чём ? не СУБД же напрямую броузеру данные отдаёт )) сервер на java со spring mvc. resultset действительно может собрать все что нужно в объект, но повторюсь мы уже имеем строку в одной ячейке одно записи в таблице, а точнее во view оракловой, в эту ячейку средствами оракловых процедур и запросов и чего-то там еще, это не мое дело, собрана эта строка в виде просто строки, текста, plain/text, стринг как ни назови это просто строка. Позже на хибернейт перепишем, пока для тестов с этими графиками пользуюсь просто jdbc Если ее вставить между "Highcharts.chart('container', {" и "});" то мы получим на странице отрисованный красивый график. И не парсится этот текст в джейсон и как объект он не передается в аяксе. если вставить тупо строку, то получим ее в двойных кавычках и это не будет воспринято как JS код который несет параметры для хайчарта, а будет тупо строка. Ладно, разберусь как-нибудь :) Спасибо за комментарии, я понял, что вариантов не много на самом деле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 21:49 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicЛадно, разберусь как-нибудь Учитывая, что вы умудрились заблудиться в трёх соснах, это надолго... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 22:35 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
Nixic, вариантов больше чем кажется - на стороне сервера пропустить через santizer типа этого https://github.com/OWASP/json-sanitizer (можно поискать или написать аналогичный для броузерного javascript) если совсем припёрло - можно через eval Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 22:43 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
hVosttNixicЛадно, разберусь как-нибудь Учитывая, что вы умудрились заблудиться в трёх соснах, это надолго... Как тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 22:53 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicКак тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент* формулировка вопроса не очень чёткая была да и упоминание о рукожопых бдшниках позже появилось(2 hVostt: кого то мне они напоминают ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 22:59 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
ИзопропилNixic, вариантов больше чем кажется - на стороне сервера пропустить через santizer типа этого https://github.com/OWASP/json-sanitizer (можно поискать или написать аналогичный для броузерного javascript) если совсем припёрло - можно через eval Код: sql 1. 2. Ну то есть все-равно больше вариантов нет :) Буду давить на БДэшников, пусть вываливают нормальный объект. На самом деле, надо сказать, что у меня в принципе все работало через параметры в виде пути или через просто параметры после '?', через jstl, страницы-то у меня jsp по сути. Хотя вообще это не важно, можно любые использовать. А вот через GET, а именно так и нужно было, не получается получить эту строку как объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 23:00 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicНу то есть все-равно больше вариантов нет :) ну как нет - санитайзер прикрутить Nixicерез jstl, страницы-то у меня jsp по сути. через фильтр можно пропустить json-подобный javascript в нашем мире к сожалению не редкость (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2017, 23:14 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicКак тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент* Как тут можно заблудиться? Вам уже сказали, используйте JSON.parse(). Я сказал, читайте про JSON, это же не высшая математика, там инфы на пол часа почитать и усвоить. Но лучше сказать, что это «чушь» и идти «дальше разбираться». В чём тут разбираться? Приходит JSON, вы его парсите, получаете объект и передаёте в свой чарт. Всё. Если приходит некорректный JSON, это вопрос совершенно другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2017, 00:23 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
ИзопропилhVostt: кого то мне они напоминают ) Угу, есть в нашей больнице пациент )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2017, 00:23 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
NixicБуду давить на БДэшников, пусть вываливают нормальный объект. Может взять данные из БД и сформировать JSON самостоятельно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2017, 00:24 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
hVosttЕсли приходит некорректный JSON, это вопрос совершенно другой. и здесь есть разные варианты спасения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2017, 00:32 |
|
||
|
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
|
|||
|---|---|---|---|
|
#18+
hVosttNixicКак тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент* Как тут можно заблудиться? Вам уже сказали, используйте JSON.parse(). Я сказал, читайте про JSON, это же не высшая математика, там инфы на пол часа почитать и усвоить. Но лучше сказать, что это «чушь» и идти «дальше разбираться». В чём тут разбираться? Приходит JSON, вы его парсите, получаете объект и передаёте в свой чарт. Всё. Если приходит некорректный JSON, это вопрос совершенно другой. То есть вот это вот в самом начале оговоренное ни о чем не говорит? То есть совершенно ведь непонятно, валидный или невалидный json приходит. Да и из самой строки представленной СОВЕРШЕННО непонятно и не видно, а валиден ли этот в json, или все таки надо потыкать в ртфм чувака. Такое ощущение, что суббота сказывается на некоторых пагубным образом))) лишь бы что-то написать. Зря я тему в этот день открыл)) Надо было понедельника подождать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2017, 08:27 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=33&tid=1444422]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 394ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...