Вы можете использовать параметр this
для функции filter (), чтобы избежать хранения вашего фильтра в глобальной переменной.
var filtered = [1, 2, 3, 4].filter(
function(e) {
return this.indexOf(e) < 0;
},
[2, 4]
);
Если Вы используете.NET 3.x (или может), сервис WCF будет Вашим лучшим выбором.
можно выборочно управлять, какие свойства сериализируются клиенту с [DataMember] атрибут. WCF также позволяет более мелкомодульное управление сериализацией JSON и десериализацией, если Вы требуете его.
Это - хороший пример для начала работы: http://blogs.msdn.com/kaevans/archive/2007/09/04/using-wcf-json-linq-and-ajax-passing-complex-types-to-wcf-services-with-json-encoding.aspx
Можно использовать System.Runtime.Serialization.Json.
DataContractJsonSerializer
класс в System.ServiceModel.Web.dll
блок.
Не заключайте мне в кавычки на этой работе наверняка, но я полагаю, что это - то, что Вы ищете.
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public XmlDocument GetXmlDocument()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(_xmlString);
return xmlDoc;
}
If you don't use code-generated classes, you can decorate your properties with the ScriptIgnoreAttribute to tell the serializer to ignore certain properties. Xml serialization has a similar attribute.
Of course, you cannot use this approach if you want to return some properties of a class on one service method call and different properties of the same class on a different service method call. If you want to do that, return an anonymous type in the service method.
[WebMethod]
[ScriptMethod]
public object GimmieData()
{
var dalEntity = dal.GimmieEntity(); //However yours works...
return new
{
id = dalEntity.Id,
description = dalEntity.Desc
};
}
The serializer could care less about the type of the object you send to it, since it just turns it into text anyway.
I also believe that you could implement ISerializable on your data entity (as a partial class if you have code-gen'd data entities) to gain fine-grained control over the serialization process, but I haven't tried it.
Я знаю, что этот поток какое-то время был тихим, но я подумал, что предлагаю, чтобы, если вы переопределите свойство SupportedTypes JavaScriptConverter в своем настраиваемом конвертере, вы можете добавить типы, которые должны использовать конвертер. При необходимости это может быть внесено в файл конфигурации. Таким образом, вам не понадобится специальный конвертер для каждого класса.
Я пытался создать универсальный преобразователь, но не мог понять, как определить его в web.config. Хотелось бы узнать, удалось ли это кому-нибудь еще.
Я понял эту идею, когда пытался решить указанную выше проблему, и наткнулся на «Создание более точного сериализатора JSON .NET» Ника Берарди (погуглите).
Работает. для меня :)
Всем спасибо.