Десериализовать JSON в ArchestrA / Quickscript.NET Wonderware - PullRequest
0 голосов
/ 22 мая 2018

Я использую VB / .NET через язык сценариев Wonderware ArchestraIDE Quickscript.net.Я вижу, что есть довольно много способов справиться с десериализацией JSON в .NET (DataContractJsonSerializer, JavaScriptSerializer, Json.net/Newtonsoft.Json) - но не может найти ни одного в подмножестве Wonderware.

Похоже на JavaScriptSerializerне входит в состав .NET Framework для Quickscript.NET, так как ArchestrA не распознает ничего из System.Web.Script;и также DataContractJsonSerializer (System.Runtime.Serialization.Json там нет).

Я не нашел ничего о json в Quickscript.net docs .

Каков стандартный / лучший способ десериализации JSON в этой среде?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Я бы порекомендовал вам поработать с внешней программой для тестирования десериализации JSON как автономного метода (используя некоторые сторонние библиотеки, такие как Newtonsoft .NET ), чтобы скомпилировать его в DLL.Затем позже импортируйте его в инфраструктуру ArchestrA через IDE и используйте свой собственный метод.

Это будет лучший подход, поскольку при использовании сценариев ArchestrA вы не сможете объявлять классы или использовать списки, что является некоторыми вещамиВы должны сделать это, когда имеете дело с хорошей структурированной десериализацией JSON для вашего лучшего понимания.

Вот в чем проблема, избегайте компиляции библиотеки кода, которая делает внешнюю ссылку на другую.Объекты ArchestrA не могут обрабатывать этот внешний вызов во время выполнения, даже если вы импортируете другую библиотеку и все другие зависимости.Существует способ правильно импортировать DLL, которая зависит от выполнения других библиотек, но, на мой взгляд, это не лучшая практика, если вы (или другой неопытный человек) будете выполнять техническое обслуживание вашего исходного кода в будущем.

Моя последняя рекомендация - получить исходный код открытых библиотек (например, Newtonsoft .NET), сделать вашу программу классом вместе с проектом и скомпилировать ее в одну сборку.После этого вам просто нужно импортировать библиотеку и выполнить правильные вызовы методов и экземпляры классов.

Если вы предпочитаете не использовать один проект компиляции, попробуйте использовать ILMerge дляобъединить две библиотеки в одну, даже если они имеют зависимость, она работает с объектами ArchestrA во время выполнения.

0 голосов
/ 23 февраля 2019

Я использую библиотеку newtonsoft .net, импортируя ее в Wonderware IDE (Galaxy> Import> Script Function Library)

https://www.newtonsoft.com/json

...