Есть ли «нативная» поддержка JSON в JDK6 Script Engine? - PullRequest
2 голосов
/ 03 мая 2010

Я использую JDK6 стандартный сценарий. Мне нужно хранить и извлекать некоторые объекты JavaScript, которые также содержат объекты Java, в JSON. Я загрузил json2.js в ScriptENgine и могу без проблем использовать его, если все объекты созданы в Scrip Engine. В тот момент, когда я пытаюсь использовать свои собственные классы Java, я получаю некоторые ошибки, такие как «объект не поддерживает toJSON».

Я не нашел много информации о JSON в контексте Java Scripting / Rhino.

Я что-то делаю не так? Как лучше всего выполнить требование?

1 Ответ

1 голос
/ 14 мая 2010

Насколько я знаю, Rhino не имеет встроенной возможности сериализации JSON.

Вероятно, вы видите ошибки, потому что json2.js использует оператор typeof value.toJSON для определения объектарассматриваемый реализует свою собственную функцию сериализации.В объектах JavaScript неудачные поиски свойств возвращают undefined.В Java-объектах при неудачных поисках членов генерируются исключения.

Один из подходов к решению этой проблемы заключается в изменении json2 таким образом, чтобы при прохождении структуры объекта:

  1. проверялось ли каждое значениеэтот вопрос происходит от базового Object прототипа JavaScript или базового класса Java Object, а
  2. применяет различную логику кодирования для экземпляров объектов Java и JavaScript.

Я не знаюНе знаю, решал ли кто-нибудь проблему сериализации произвольного объекта Java в JSON с помощью рефлексии.Если это так, то это может быть полезно.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...