我有一个 js 对象,结构如下:
object.property1 = "some string";
object.property2 = "some string";
object.property3.property1 = "some string";
object.property3.property2 = "some string";
object.property3.property2 = "some string";
我正在使用 JSON.stringify(object) 通过 ajax 请求传递它。当我尝试使用 JavaScriptSerializer.Deserialize 作为字典对其进行反序列化时,出现以下错误:
没有为“System.String”类型定义无参数构造函数。
这个完全相同的过程适用于具有非“集合”属性的常规对象..感谢您的帮助!
这是因为反序列化器不知道如何处理子对象。你在 JS 中的内容是这样的:
var x = {
'property1' : 'string',
'property2' : 'string',
'property3' : { p1: 'string', p2: 'string', p3: 'string' },
};
它没有到 C# 中有效内容的映射:
HashTable h = new HashTable();
h.Add("property1", "string");
h.Add("property2", "string");
h.Add("property3", ???);
这 ???是因为这里没有定义类型,那么反序列化器如何知道JS中的匿名对象代表什么?
Edit
没有办法在这里完成你想要完成的事情。您需要输入对象。例如,像这样定义你的类:
class Foo{
string property1 { get; set; }
string property2 { get; set; }
Bar property3 { get; set; } // "Bar" would describe your sub-object
}
class Bar{
string p1 { get; set; }
string p2 { get; set; }
string p3 { get; set; }
}
...或者类似的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)