Я написал [WebMethod], которые возвращают строку, хранить упорядоченный объектWeb формат ответа метод Mono2.0.1
[WebMethod]
public string doStuffs() {
...
return JavaScriptConvert.SerializeObject(myObj);
// JSON Serializer library is JSON.NET 1.3.1, for MONO
}
Когда я вызываю метод с $ .post из JQuery:
$.ajax({
type: "POST",
url: "/web/doStuffs",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do stuffs
}
});
Проблема - это ответ. Вот что я получаю:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://localhost:8080/papi">{
"field1" : "value1", "field2 : "value2", etc etc}</string>
Почему ответ JSON был инкапсулирован внутри XML? Я могу видеть из заголовка HTTP Response это (? Ошибочно) устанавливается:
Content-Type text/xml; charset=utf-8
Как переключить тип содержимого ответа? Благодарю.
У меня нет опыта работы с Mono, поэтому я просто прокомментирую. Если ваш doStuffs() является веб-методом .NET, он может автоматически сериализовать его результат как XML. Это касается веб-методов ASP.Net .asmx, по крайней мере. –
ASFIK да, он автоматически сериализуется в XML. Я ищу способ переключиться на JSON. – 2009-04-26 09:29:12
Какие преимущества предлагает WebMethod, если вы отключите его сериализацию? Я не уверен, что можно пропустить этап сериализации WebMethod, поскольку это более или менее его главный момент. Или это известно, что это возможно? Я считаю, что даже URL-адрес «web/doStuffs» требует функциональности JSON из фреймворка, поскольку обычный SOAP имеет только одну конечную точку и указывает метод в своем теле. –