我越来越疯狂试图在我的类库中使用Json序列化器/反序列化器,并在SQL Server中导入我的程序集。如何在CLR过程中使用Json解析器?
我正在使用响应Json字符串的WebAPI,并且我想创建调用该API并使用api结果的CLR Sql过程。
我尝试2种方式来反序列化JSON字符串:
1) System.Web.Script.Serialization
2) System.Runtime.Serialization.Json
第一个让我这个错误:
Assembly 'system.web.extensions, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35.' was not found in the SQL catalog. (Microsoft SQL Server, Error: 6503)
和第二单:
Assembly 'system.runtime.serialization, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.' was not found in the SQL catalog. (Microsoft SQL Server, Error: 6503)
在我的类库中有没有解析json的方法?! (除了我的类库自我创造一个JSON串行器/解串器的!!!)
的Visual Studio 2015年社区的Microsoft SQL Server 2016开发者
预先感谢您。
您提供的代码很有用,非常感谢,但它有警告说:如果您升级或服务此程序集或.NET Framework,您的CLR集成例程可能会停止工作。你的建议是什么?包含解析项目中JSON的代码?或者继续导入System.Runtime.Serialization? – Parsa
@Parsa是的,那个“警告”正是我在顶部第3点提到的(使用** ServiceModel **作为例子)。鉴于JSON就像XML一样只是一种文本格式,它只是解析它的问题(而不是需要仅在.NET Framework库中可用的资源)。这就是我使用JsonFX的原因。这不是完美的,但它做我需要的,大会标记为“安全”和数据库设置为“可信关闭”。但是如果你只需要一两个文档(不是一般意义上的),那么我会手工编写并完成它。 –
我也使用JsonFx,而我想将JsonFx添加到sqlserver程序集中,它给了我这个错误:<<<由于安全程序集'JsonFx'中的类型'XmlInTransformer'具有静态字段'DefaultObjectName',因此CREATE ASSEMBLY失败。安全程序集中静态字段的属性必须在Visual C#中只读标记,在Visual Basic中只读标记,或者在Visual C++和中间语言中以initonly标记。 >>>之后,我去JsonFx源,并使该属性ReadOnly!它的工作原理是这样吗? – Parsa