gpt4 book ai didi

JavaScriptSerializer 反序列化对象 "collection"作为对象中的属性失败

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:15 25 4
gpt4 key购买 nike

我有一个结构如下的 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中的匿名对象代表什么?

编辑

这里没有办法完成您想要完成的事情。您需要键入您的对象。例如,像这样定义你的类:

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; }
}

...或类似的东西。

关于JavaScriptSerializer 反序列化对象 "collection"作为对象中的属性失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com