Вопрос

Только что скачал serviceStack.text, чтобы использовать его в моем asp.net. У меня есть занятия со многими свойствами, и я хотел бы сериализовать пять из них (String, Integer, Binary) на JSON. Может ли кто -нибудь опубликовать простой пример, как создать объект JSON из моего класса?

Это было полезно?

Решение

ServiceStack по умолчанию по умолчанию по умолчанию по умолчанию по умолчанию по умолчанию по умолчанию по умолчанию все.

Если вы хотите сериализовать только несколько свойств, то вы хотите украсить свой класс с помощью [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; }
}

Затем вы можете использовать либо методы статической утилиты на Jsoneseriazer для (de) сериализовать его, либо более методы расширения, например: EG:

var dto = new MyClass { WillSerializeString = "some text" };
string json = dto.ToJson();
MyClass fromJson = json.FromJson<MyClass>();

Редактировать:

Как упоминает @noah (из комментариев), вы также можете использовать атрибут [игнорировать], чтобы исключить одно свойство.

Другие советы

Вы можете использовать [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);

Источник: http://www.servicestack.net/mythz_blog/?p=344

Тест ServiceStack доказывает, что, предоставляя [DataContract] а также [DataMember] Атрибут позволяет вам определить, какой из них сериализуется, а какой нет.

Тест: https://github.com/servicestack/servicestack.text/blob/master/tests/servicestack.text.tests/datacontracttests.cs

Объекты в тесте: https://github.com/servicestack/servicestack.text/blob/master/tests/servicestack.text.tests/support/ddndtos.cs

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top