Мне структурировали объект 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 (объект) передать это с запросом ajax. Когда я пытаюсь десериализовать это использование JavaScriptSerializer. Десериализуйте как Словарь, я получаю следующую ошибку:
Никакой конструктор без параметров не определяется для типа 'Системы. Строка'.
Этот точно тот же самый процесс работает на регулярный объект с не свойства "набора".. спасибо за любую справку!
Это потому, что десериализатор не знает, как работать с подобъектом. То, что у вас есть в 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; }
}
... или что-то в этом роде.