Сервисный пакет.Текст как сериализовать класс в JSon
Только что скачал ServiceStack.Текст, чтобы использовать его в моем ASP.NET у меня есть класс со многими свойствами, и я хотел бы сериализовать пять из них(string, integer, binary) в JSON. Может ли кто-нибудь опубликовать простой пример, как создать объект JSon из моего класса?
3 ответа:
ServiceStack десериализует все открытые свойства POCO по умолчанию.
Если вы хотите сериализовать только несколько свойств, то вы хотите украсить свой класс атрибутами [DataContract], [DataMember] (так же, как если бы вы использовали MS DataContractJsonSerializer), например:
[DataContract] public class MyClass { public string WillNotSerializeString { get; set; } [DataMember] public string WillSerializeString { get; set; } [DataMember] public int WillSerializeInt { get; set; } [DataMember] public byte[] WillSerializeByteArray { get; set; } }
Затем вы можете использовать либо статические служебные методы на JsonSerializer для (De)сериализации, либо более сжатые методы расширения, например:
var dto = new MyClass { WillSerializeString = "some text" }; string json = dto.ToJson(); MyClass fromJson = json.FromJson<MyClass>();
Править:
Как упоминает @Noah (из комментариев), вы также можете использовать атрибут [IgnoreDataMember], чтобы исключить одно свойство.
Вы можете использовать атрибут
[Serializable()]
в своем пользовательском классе, а затем:Чтобы игнорировать определенные свойства в сериализуемом объекте, просто поместите на них атрибутJavaScriptSerializer serializer = new JavaScriptSerializer(); var Json = serializer.Serialize(myObject);
[NonSerialized]
.Обновление:
Учитывая, что вы хотите использовать ServiceStack для выполнения сериализации, веб-сайт ServiceStack дает следующий пример:
var customer = new Customer { Name="Joe Bloggs", Age=31 }; var json = JsonSerializer.SerializeToString(customer); var fromJson = JsonSerializer.DeserializeFromString<Customer>(json);
Тест Servicestack доказывает, что, предоставляя атрибуты
[DataContract]
и[DataMember]
, можно определить, какой из них сериализуется, а какой нет.Объекты в тесте: https://github.com/ServiceStack/ServiceStack.Text/blob/master/tests/ServiceStack.Text.Tests/Support/DdnDtos.cs