Как IPCRenderer.send() сериализует данные в JSON?

Я пытаюсь отправить информацию об ошибке, используя ipcRenderer.send("error", errorObject), но мой объект Error сериализуется в '{}' в прослушивателе. Теперь я знаю, что ipcRenderer внутренне сериализует объекты в JSON (дополнительная информация здесь: https://electronjs.org/docs/api/ipc-рендерер), поэтому я хочу выяснить, какой метод вызывается для внутренней сериализации в JSON, чтобы я мог попытаться переопределить его в своем коде. Кто-нибудь может помочь?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
868
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что он использует JSON.stringify(), но, вероятно, он сериализован из соображений безопасности, поэтому, возможно, лучше не переопределять его. Кстати, я не считаю переопределение JSON.stringify() хорошей практикой. Я не заметил ipcRenderer.send сериализованных данных, я передаю простой объект JavaScript как данные и не анализирую его на стороне ipcMain.

Привет! Спасибо за предложение, это сработает для большинства объектов, однако в этом случае я хочу отправить объект Error, который сериализуется как пустой объект '{}'. Насколько я знаю, JSON.stringify() вызывает метод toJSON() в объекте, я написал класс CustomError, расширяющий Error, и попытался переопределить метод toJSON(), но он не работает, поэтому я предполагаю, что он не использует JSON. .stringify().

ybs 24.05.2019 12:21

Может это поможет: stackoverflow.com/questions/18391212/…

Damien 24.05.2019 12:23

Это очень проницательный пост, я попробую некоторые из предложений там. Большое спасибо! :)

ybs 27.05.2019 04:36

Другие вопросы по теме