Десериализовать из строки json в список словаря? - PullRequest
0 голосов
/ 03 декабря 2018

Я передаю массив объектов json из метода ajax.

                var FieldValue = {
                    Key: $(this).attr("id"),
                    Value: $(this).val()
                };
                FieldValues.push(FieldValue);

        $.ajax({
            url: "../Handler.ashx?&Action=Save",
            data: JSON.stringify(FieldValues),
            type: "post",
            datatype: "json",
            contentType: "application/json; charset=utf-8",
        });

Но когда я попытался десериализовать в Список словаря.

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
List<Dictionary<string, string>> WebFields = new List<Dictionary<string, string>>();
WebFields = javaScriptSerializer.Deserialize<List<Dictionary<string, string>>>(jsonString);

Мой ожидаемый список вывода выглядит так:

  string Key =  WebFields[0].Key
  string Value =  WebFields[0].Value

Но теперь каждый элемент WebField похож на

WebFields[0]  -> [0] -> Key
                 [1]  -> Value

Как достичь ожидаемого результата?

1 Ответ

0 голосов
/ 03 декабря 2018

Чтобы получить словарь на стороне сервера, попробуйте отправить базовый POJO.Вместо:

 var FieldValue = {
                Key: $(this).attr("id"),
                Value: $(this).val()
            };
  FieldValues.push(FieldValue);

try:

 var key = $(this).attr("id");
 var value =$(this).val()
 var fieldValue = { key: value };
 fieldValues.push(fieldValue);

Объект javascript представляется в виде пары ключ-значение, поэтому при возврате Dictionary возвращается объект JS с ключом propname, изначение является значением

...