Просто загрузите ServiceStack.Text, чтобы использовать его в моем ASP.NET. У меня есть класс со многими свойствами и хотел бы сериализовать пять из них (string, integer, binary) для JSON. Может ли кто-нибудь опубликовать простой пример создания объекта JSon из моего класса?
ServiceStack.Text, как сериализовать класс в JSon
Ответ 1
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], чтобы исключить одно свойство.
Ответ 2
Вы можете использовать атрибут [Serializable()]
в своем пользовательском классе, а затем:
JavaScriptSerializer serializer = new JavaScriptSerializer();
var Json = serializer.Serialize(myObject);
Чтобы игнорировать определенные свойства в объекте, который вы сериализуете, просто поместите атрибут [NonSerialized]
на них.
Update:
Учитывая, что вы хотите использовать ServiceStack для выполнения сериализации, веб-сайт ServiceStack дает следующий пример:
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = JsonSerializer.SerializeToString(customer);
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json);
Ответ 3
servicestack test доказывает, что, предоставляя атрибуты [DataContract]
и [DataMember]
, вы можете определить, какой из них сериализуется, а какой нет.
объекты в тесте: https://github.com/ServiceStack/ServiceStack.Text/blob/master/tests/ServiceStack.Text.Tests/Support/DdnDtos.cs