Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Wonderware中反序列化JSON';s ArchestrA/Quickscript.NET_Json_Vb.net_Wonderware - Fatal编程技术网

在Wonderware中反序列化JSON';s ArchestrA/Quickscript.NET

在Wonderware中反序列化JSON';s ArchestrA/Quickscript.NET,json,vb.net,wonderware,Json,Vb.net,Wonderware,我通过Wonderware的ArchestraIDE Quickscript.NET脚本语言使用VB/.NET。我看到有很多方法可以在.NET中处理JSON反序列化(DataContractJsonSerializer、JavaScriptSerializer、JSON.NET/Newtonsoft.JSON),但在Wonderware子集中找不到任何方法 JavaScriptSerializer似乎没有包含在Quickscript.NET的.NET框架中,因为ArchestrA无法识别Syst

我通过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的标准/最佳方法是什么?

我通过将newtonsoft.net库导入Wonderware IDE(Galaxy>Import>脚本函数库)来使用它


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

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

这里是一个陷阱,避免编译一个代码库,使外部引用另一个。ArchestrA的对象无法在运行时处理该外部调用,即使您导入了其他库和所有其他依赖项。有一种方法可以正确地导入依赖于其他库来执行的DLL,但在我看来,如果您(或其他未经建议的人)打算在源代码中进行将来的维护,这不是最佳做法

我的最后一个建议是获取开放库(如Newtonsoft.NET)的源代码,将您的程序作为一个类与其项目一起生成,并将其编译成单个版本。之后,您只需要导入库并执行适当的方法调用和类实例


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

您可以编写自己的库,并将其作为脚本函数库导入ArchestrA。通过这种方式,您可以更多地访问.NET系统。谢谢-我一直倾向于使用这种解决方案,但认为这有点过分了。目前我正在导入json.net来进行简单的解析,但无法使用它在脚本中进行适当的反序列化,因为似乎不支持泛型或在脚本中创建类的方法。