我需要反序列化具有多个嵌套 Json 数组的下一个 Json 字符串:
{"d1":[["11791452",[["980",""]]],["11791453",[["1060",""],["1140",""],["1220",""],["1300",""]]],["11791454",[["1070",""]]]]}
我尝试分几个步骤来完成,到目前为止,我能够反序列化三层嵌套数组。如下:
{"aOaOa":[[["1060",""],["1140",""],["1220",""],["1300",""]]]}
public class ThreeSimpleNestedArrays
{
public List<List<string[]>> aOaOa; //array of arrays of arrays
public ThreeSimpleNestedArrays()
{
aOaOa = new List<List<string[]>>();
}
}
但是当我在数组结构中添加额外的字符串时出现问题:
{"TEST": [["11791453",[["1060",""],["1140",""],["1220",""],["1300",""]]],["123456",[["0","1"],["2","3"]]]]}
public class ComplexNestedArray
{
public List<Dictionary<string,List<string[]> >> TEST;
public ComplexNestedArray()
{
TEST = new List<Dictionary<string, List<string[]>>>();
}
}
我收到下一条错误消息:“无法将 'System.String' 类型的对象转换为 'System.Collections.Generic.Dictionary`2[System.String,System.Object]'。”
我错过了什么?
任何人都可以建议一种方法来反序列化像这样嵌套在使用 DataContractJsonSerializer 的 Json 数组中的对象吗?
我用来反序列化的代码是下一个:
//Works
DataContractJsonSerializer dcJsonSer = new DataContractJsonSerializer(typeof(ThreeSimpleNestedArrays));
ThreeSimpleNestedArrays root = (ThreeSimpleNestedArrays)dcJsonSer.ReadObject(str);
//Don't work
DataContractJsonSerializer dcJsonSer = new DataContractJsonSerializer(typeof(ComplexNestedArray));
ComplexNestedArray root = (ComplexNestedArray)dcJsonSer.ReadObject(str);
顺便说一句,当它被序列化为 Json 对象时,我能够对对象进行反序列化,如下所示:
{"TEST": [{"s": "11791453","aOa": [["1060",""],["1140",""],["1220",""],["1300",""]]},{"s": "123456","aOa":[["0","1"],["2","3"]]}]}
使用具有两个成员的类(字符串“s”和字符串 []“aOa”的列表),但没有名称,当对象被序列化为数组时,我无法做到这一点。
有什么建议吗?