|
|
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Выдрал JSON-текст из JavaScript, а там имена параметров не заключены в двойные кавычки :( Код: pascal 1. 2. 3. 4. 5. 6. в итоге jO равен NIL`у. Тестировал json-текст на разных онлайн сервисах и ошибок нет. Но парсер Delphi отказывается его парсить и ошибок не выдаёт. Ошибки показывает только firefox, и я так понял, что проблема в том, что имена параметров не заключены в двойные кавычки. Мне сказали, что для JS это нормально, т.к. в JS есть специальная функция, которая превращает такой "неполноценный" json-текст в полноценный, правильный, корректный. А если ли у Delphi такая фишка? Или придётся создавать своё колесо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 12:56 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Выдрал JSON-текст из JavaScript, а привёл невнятный кусок кода на Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 13:16 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
defecatorпривёл невнятный кусок кода на Delphi Почему невнятный? Это строка получения TJSONObject из JSON-текста. В JS такой финт ушами выполняет функция stringify. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 13:29 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
кусок json: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. как видите, названия (имена) без кавычек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 13:30 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11, Код: pascal 1. 2. 3. 4. придется свой пилить, так как в каноническом JSON имена параметров должны быть в кавычках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 14:00 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Странно, что разработчики Delphi такое не предусмотрели искаропки https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 14:03 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11, наверное потому что "проблемы" реализация JS embarcadero не сильно волновали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 14:30 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Судя по https://ru.wikipedia.org/wiki/JSON#Синтаксис, бескавычность допускается более новым стандартом JSON5, который в Дельфи просто не реализован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 14:34 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11Или придётся создавать своё колесо? Этих колёс уже на вездеход хватит, наверное... https://github.com/hgourvest/superobject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 19:39 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
alekcvp, ты уверен, что это колесо понимает именно такой формат, о котором здесь речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 08:23 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Superobject не компилируется в Tokyo. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 08:46 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11кусок json: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В общем, я так понял, что это сериализация. superobject умеет такое обрабатывать: https://github.com/hgourvest/superobject#rtti--marshalling-in-delphi-2010 но в Токио не компилируется: 21576692 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 09:30 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Получается, что, если это сериализация объекта, но нужно узнать как-то, где-то, структуру этого объекта, т.е. описание: массив ли это, запись и потом и потом с помощью RTTI восстановить из такого вида JSONа. Или библиотека сама может это сделать? Вернее, не сериализация, а маршалинг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 09:50 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Тут ещё что-то нашёл про json-маршалинг в Delphi. https://keeper89.blogspot.com/2009/09/delphi-2010_4801.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 09:56 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
И вот: http://fire-monkey.ru/topic/2665-маршалингдемаршалинг-в-systemjson/ авторЕсли правильно понимаю автор имеет ввиду TJSon.ObjectToJsonObject и TJSon.ObjectToJsonString. Как раз в стандартной библиотеке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:01 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11, какой нафиг маршалинг?! Это вообще неофициальная фича в делфи, костыльная, с json (для их рад сервера). Сейчас от подобного даже в новой java отказываются (от встроенной сериализации объектов). Только ручки, только хардкор. Надо из джаваскрипта/парса вытащить данные? Вперед каждое поле сохранять/обрабатывать. Имена параметров/полей неизвестны на входе? Есть перебор по ним. Больше контроля, лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:29 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
JaDiкакой нафиг маршалинг?! Это вообще неофициальная фича в делфи, Даже справка есть http://docwiki.embarcadero.com/Libraries/Berlin/en/REST.Json.TJson.JsonToObject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:44 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
пользуюсь вот этой хорошей библиотекой от Andreas Hausladen: JsonDataObjects Относительно новая, очень простая и удобная, минимум кода, есть даже твой любимый маршалинг для простых объектов (но все-равно рекомендую ручками -- надежнее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:45 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11JaDiкакой нафиг маршалинг?! Это вообще неофициальная фича в делфи, Даже справка есть http://docwiki.embarcadero.com/Libraries/Berlin/en/REST.Json.TJson.JsonToObject Да, справка авторEmbarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page! Говорю же, это внутренняя фича, не для использования в своих проектах (на свой страх и риск, так сказать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:46 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
авторEmbarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page! это у них по всей справке написано :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:52 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
X11, Но есть нюанс -- кроме этого там больше ничего нет. Секрет прост -- справка делфи сгенерирована автоматически по исходному коду, и только потом дописывались доки. И здесь до них даже руки не дошли. Вообще, где-то год-два назад я в новостях приносил блого-пост от японского товарища -- и он там как раз "открыл" эти неофициальные методы и рассказал народу как пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:58 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
Вот что ещё нашёл https://github.com/PKGeorgiev/Delphi-JsonToDelphiClass/releases http://www.pgeorgiev.com/introducing-jsontodelphiclass/ уверен, кому-нибудь пригодится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:06 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:32 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
JaDiX11, Но есть нюанс -- кроме этого там больше ничего нет. Секрет прост -- справка делфи сгенерирована автоматически по исходному коду, и только потом дописывались доки. И здесь до них даже руки не дошли. Вообще, где-то год-два назад я в новостях приносил блого-пост от японского товарища -- и он там как раз "открыл" эти неофициальные методы и рассказал народу как пользоваться. Да ладно, как только эта фича появилась в каком-то из релизов Дельфи, она тут же была описана в одной из книг Марко Канту. Marco Cantu - Delphi 2010 Handbook. Marco CantuJSON and Object Marshaling...........................................................................................233 Introducing JSON.......................................................................................................233 JSON in Delphi2010...................................................................................................234 Parsing JSON..............................................................................................................236 Streaming Objects to JSON.........................................................................................237 Using JSON Converters and Reverters.......................................................................240 JSON Values and Marshaling in DataSnap ServerMethods......................................243 С тех пор Эмбаркадеро кажется что-то добавляло и меняло в этом, https://community.embarcadero.com/blogs/entry/how-to-convert-an-object-to-json-and-back-with-a-single-line-of-code-497 но началось это и было описано уже давно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 13:45 |
|
||
|
JSON из JS, где имена не заключены в двойные кавычки
|
|||
|---|---|---|---|
|
#18+
s62, у Канту совсем другой механизм описан, для которого, кстати, есть вполне официальная документация: http://docwiki.embarcadero.com/Libraries/Tokyo/en/Data.DBXJSONReflect.TJSONMarshal Так сказать, для наглядности -- официальная фича и не официальная.. Давно уже взял за правило, что если какой-то подозрительный класс или метод не описан в доках, то это что-то для внутреннего пользования и лучше стараться не использовать без необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 14:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39674832&tid=2040611]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
230ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 534ms |

| 0 / 0 |
