Почему веб-сервис возвращает данные как msg.d

Я обнаружил, что мой веб-метод возвращает данные как

{ "d":
 [
   {"id":"1","itemtxt":"Masters"},
   {"id":"2","itemtxt":"Transactions"},
   {"id":"3","itemtxt":"Misch. Reports"}
 ]
}

Если вы заметили, массив называется "d". Это почему? есть ли для этого правила?

Для вашей информации я возвращаю список объектов (List<webitem>)

public class webitem
{
    public webitem(string kid, string kval)
    {
        this.id = kid;
        this.itemtxt = kval;
    }

    public string id { get; set;  }
    public string itemtxt { get; set; }
}

Что означает это "д"? будет ли оно всегда одинаковым для любых данных, которые я отправляю с моего веб-метода? или это будет меняться в зависимости от моего типа данных / типа класса?

РЕДАКТИРОВАТЬ

Вот вебметод

[WebMethod]
public  List<webitem> GetSubModules(string key)
{
    string s = " order by smid";
    if (key != null)
        s = " where moduleid=" + key + s;
    return Utility.GetDDLVal("Select smid id,smname itemtxt from m_submodules "+s, null, null);
}

1 ответ

Решение

Это что-то вроде функции безопасности как часть ASP.NET. Он всегда будет там, пока вы не поменяете сериализаторы. Блог Дэвида Уорда (ныне несуществующий) сказал, что это такое:

Это относится ко всем службам ASMX JSON, сериализованным через расширения ASP.NET AJAX в ASP.NET 3.5. Даже если вы только возвращаете скалярное возвращаемое значение, такое как строка, int или логическое значение, результат всегда будет заключен в "d".

И почему:

{"d": 1}

Не является допустимым оператором JavaScript, где как это:

[1]

Является.

Таким образом, перенос параметра "d" предотвращает непосредственное выполнение строки как скрипта. Не беспокойтесь о конструкторе Object или Array.

Другие вопросы по тегам