我有一个多维数组转换为这种格式的 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/