2

我通过 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文档中也没有找到任何关于 json 的信息。

在这种环境中反序列化 JSON 的标准/最佳方法是什么?

4

2 回答 2

4

我建议您使用外部程序来测试 JSON 反序列化作为独立方法(使用一些第三方库,如Newtonsoft .NET)将其编译为 DLL。然后稍后通过 IDE 将其导入 ArchestrA 框架并使用您自己的方法。

这将是一种更好的方法,因为使用 ArchestrA 脚本您将无法声明类或使用列表,这是您在处理良好的结构化 JSON 反序列化时应该做的一些事情,以便您更好地理解。

这是一个问题,避免编译一个对另一个进行外部引用的代码库。即使您导入其他库和所有其他依赖项,ArchestrA 的对象也无法在运行时处理该外部调用。有一种方法可以正确导入依赖于其他库来执行的 DLL,但如果您(或其他不知情的人)将来要对源代码进行维护,这不是最佳实践。

我的最终建议是获取开放库(如 Newtonsoft .NET)的源代码,并将您的程序作为其项目旁边的类,并将其编译为单个构建。之后,您只需要导入库并执行正确的方法调用和类实例。

如果您不想使用单个编译项目,请尝试使用ILMerge将两个库合并为一个,即使它们具有依赖关系,它也可以在运行时对 ArchestrA 对象起作用。

于 2019-06-25T11:56:09.660 回答
0

我通过将 newtonsoft .net 库导入 Wonderware IDE(Galaxy>Import>Script Function Library)来使用它

https://www.newtonsoft.com/json

于 2019-02-23T18:25:54.787 回答