谁使用JavaScriptSerializer序列化/反序列化列表 >

问题描述 投票:0回答:2

我已经使用JavaScriptSerializer序列化了List<Tuple<long, string, int>> obj

JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(dataToSerialize as IEnumerable); 

我得到了字符串:

[{"Item1":0,"Item2":"UserModifiedId","Item3":1},{"Item1":-1,"Item2":"","Item3":0},{"Item1":-1,"Item2":"","Item3":0}]

当我尝试使用以下方法反序列化时:

JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<List<T>>(strObject);

我得到以下前者:

No parameterless constructor defined for type of 'System.Tuple`3[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.```

Can anyone help me with this Issue (to keep using JavaScriptSerializer)?
c# unit-testing javascriptserializer
2个回答
0
投票

尝试反序列化时指定确切的类型

JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<List<Tuple<long, string, int>>>(strObject);

0
投票

JavaScriptSerializer需要无参数构造函数以在反序列化期间创建对象。

因为类Tuple没有任何内容,反序列化失败。

如果您不打扰,可以使用NuGet程序包Newtonsoft.Json,它没有他的问题:

var strObject= JsonConvert.SerializeObject(dataToSerialize);

var tupleList = JsonConvert.DeserializeObject<List<Tuple<long, string, int>>>(strObject);
© www.soinside.com 2019 - 2024. All rights reserved.