我通过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的任何内容。
在此环境中反序列化JSON的标准/最佳方法是什么?
答案 0 :(得分:3)
我建议您在外部程序上进行工作,以将JSON反序列化作为独立方法(使用诸如Newtonsoft .NET之类的第三方库)进行测试,以将其编译为DLL。然后,通过IDE将其导入ArchestrA框架,并使用您自己的方法。
这将是一个更好的方法,因为使用ArchestrA脚本您将无法声明类或使用列表,这是在处理结构化JSON反序列化以便更好理解时应该做的事情。
这很重要,请避免编译一个外部引用另一个代码库的代码库。即使您导入其他库和所有其他依赖项,ArchestrA的对象也无法在运行时处理该外部调用。有一种方法可以正确导入依赖于其他库执行的DLL,但我认为,如果您(或其他不建议使用的人)将来要对源代码进行维护,这不是最佳实践。
我的最终建议是获取开放库的源代码(例如Newtonsoft .NET),并使您的程序与项目一起成为类,然后将其编译为单个版本。之后,您只需要导入库并执行适当的方法调用和类实例即可。
如果您不想使用单个编译项目,请尝试使用ILMerge将两个库合并为一个,即使它们具有依赖性,也可以在运行时对ArchestrA对象起作用。
答案 1 :(得分:0)
我通过将newtonsoft .net库导入Wonderware IDE(Galaxy> Import>脚本功能库)来使用