Почему веб-сервис возвращает данные как 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.