asp.net - 将 JSON 数据转换为 VB.NET 多维数组

标签 asp.net json type-conversion vb.net-2010

我有一个多维数组转换为这种格式的 JSON 数据。

"[[null,null,null,null,null,null],[null,null,null,1,1,null],[null,null,null,null,1,1],[null,null,null,null,null,null],[null,null,null,null,null,null]]"

我正在尝试使用这样的 JavascriptSerializer 将这个多维字符串/整数数组转换为等效形式

 Dim retValue As List(Of String)
 Dim deserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()

retValue deserializer.Deserialize(Of List(Of String))(o.value) 

它抛出异常:数组的反序列化不支持类型“System.String”。

我尝试将其转换为整数 ,但出现了同样的异常。

如何使用 .NET 3.5 执行转换。

如果 System.Web.Script.Serialization.JavaScriptSerializer 可以完成这项工作,我不想使用 JSON.NET dll。

有什么建议吗?

最佳答案

您试图将该 Json 转换为一维字符串列表,而实际上它是一个锯齿状字符串数组。使用泛型,我不相信您可以巧妙地嵌套其他强类型对象(尽管我欢迎对此进行更正),并且您无法轻松地将它们相互转换(除非您有一个严格的结构,在这种情况下,带有 DataContracts 的 POCO 将是前进的方向) .

我的方法是序列化为一个对象,其中字符串、整数和数组可以愉快地共存;他们只是需要适当的拳击。我承认并不理想。我还没有尝试过 JavaScriptSerializer,但已经使用 DataContractJsonSerialiser 测试并确认了以下工作...

string json = "[[null,null,null,null,null,null],[null,null,null,1,1,null],[null,null,null,null,1,1],[null,null,null,null,null,null],[null,null,null,null,null,null]]";
            object castObj = null;
            DataContractJsonSerializer ser = new DataContractJsonSerializer( typeof( System.Object ));

            // Create dummy stream to read into
            using (MemoryStream ms = new MemoryStream( System.Text.Encoding.UTF8.GetBytes( json ) ) ){
                castObj = ser.ReadObject(ms);
            }

HTH

关于asp.net - 将 JSON 数据转换为 VB.NET 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464710/

相关文章:

c# - 尝试将 SQL 中的 varbinary(MAX) 值转换为 byte[] 并在 asp 图像控件中显示

javascript - 如何设置 Silverlight 浏览器应用程序和嵌入式 Web 浏览器控件之间的通信

c# - 使用 iTextSharp 将带有 CSS 的 HTML 转换为 PDF

php - GCM 返回错误 : field data must be a json array

sql - 以 JSON 形式返回时如何从同一查询中获取 id 列表

c++ - 从 'void*' 到类的无效转换 (c++)

c# - 文件上传C#asp.net

javascript - JS对象的Stringify添加额外的数据

c - 二进制操作数无效/(有 ‘float *’ 和 ‘int’ )?

ios - 将 NSString 转换为 NSDate 时出错