在 Wonderware 的 ArchestrA 中反序列化 JSON / Quickscript.NET
Deserialize JSON in Wonderware's ArchestrA / Quickscript.NET
我通过 Wonderware 的 ArchestraIDE Quickscript.net 脚本语言使用 VB/.NET。我看到有很多方法可以处理 .NET 中的 JSON 反序列化(DataContractJsonSerializer、JavaScriptSerializer、Json.net/Newtonsoft.Json)——但是在 Wonderware 子集中找不到任何内容。
似乎 JavaScriptSerializer 并未作为 Quickscript.NET 的 .NET 框架的一部分包含在内,因为 ArchestrA 无法识别 System.Web.Script 中的任何内容; DataContractJsonSerializer 也不存在(System.Runtime.Serialization.Json 不存在)。
我也没有在 Quickscript.net docs 中找到任何关于 json 的信息。
在此环境中 standard/best 反序列化 JSON 的方法是什么?
我通过将 newtonsoft .net 库导入 Wonderware IDE(Galaxy>导入>脚本函数库)来使用它
我建议你使用外部程序来测试 JSON 反序列化作为 Stand-Alone 方法(使用一些第三方库,如 Newtonsoft .NET)将其编译成动态链接库。然后通过 IDE 将其导入 ArchestrA 框架并使用您自己的方法。
这将是一个更好的方法,因为使用 ArchestrA 脚本,您将无法声明 classes 或使用列表,这是处理良好结构化时应该做的一些事情 JSON 反序列化以便您更好地理解。
注意事项是,避免编译对另一个代码库进行外部引用的代码库。 ArchestrA 的对象无法在运行时处理该外部调用,即使您导入其他库和所有其他依赖项也是如此。有一种方法可以正确导入依赖于其他库执行的 DLL,但如果您(或其他不知情的人)打算在您的源代码中进行未来维护,我认为这不是最佳实践。
我最后的建议是获取开放库(如 Newtonsoft .NET)的源代码,并将您的程序作为 class 与其项目一起编译,并将其编译为单个版本。之后,您只需要导入库并进行适当的方法调用和 classes 实例。
如果您不喜欢使用单个编译项目,请尝试使用ILMerge将两个库合并为一个,即使它们有依赖关系,它也会在运行时对 ArchestrA 对象起作用。
我通过 Wonderware 的 ArchestraIDE Quickscript.net 脚本语言使用 VB/.NET。我看到有很多方法可以处理 .NET 中的 JSON 反序列化(DataContractJsonSerializer、JavaScriptSerializer、Json.net/Newtonsoft.Json)——但是在 Wonderware 子集中找不到任何内容。
似乎 JavaScriptSerializer 并未作为 Quickscript.NET 的 .NET 框架的一部分包含在内,因为 ArchestrA 无法识别 System.Web.Script 中的任何内容; DataContractJsonSerializer 也不存在(System.Runtime.Serialization.Json 不存在)。
我也没有在 Quickscript.net docs 中找到任何关于 json 的信息。
在此环境中 standard/best 反序列化 JSON 的方法是什么?
我通过将 newtonsoft .net 库导入 Wonderware IDE(Galaxy>导入>脚本函数库)来使用它
我建议你使用外部程序来测试 JSON 反序列化作为 Stand-Alone 方法(使用一些第三方库,如 Newtonsoft .NET)将其编译成动态链接库。然后通过 IDE 将其导入 ArchestrA 框架并使用您自己的方法。
这将是一个更好的方法,因为使用 ArchestrA 脚本,您将无法声明 classes 或使用列表,这是处理良好结构化时应该做的一些事情 JSON 反序列化以便您更好地理解。
注意事项是,避免编译对另一个代码库进行外部引用的代码库。 ArchestrA 的对象无法在运行时处理该外部调用,即使您导入其他库和所有其他依赖项也是如此。有一种方法可以正确导入依赖于其他库执行的 DLL,但如果您(或其他不知情的人)打算在您的源代码中进行未来维护,我认为这不是最佳实践。
我最后的建议是获取开放库(如 Newtonsoft .NET)的源代码,并将您的程序作为 class 与其项目一起编译,并将其编译为单个版本。之后,您只需要导入库并进行适当的方法调用和 classes 实例。
如果您不喜欢使用单个编译项目,请尝试使用ILMerge将两个库合并为一个,即使它们有依赖关系,它也会在运行时对 ArchestrA 对象起作用。