Question

Il suffit de télécharger ServiceStack.Text pour l'utiliser dans mon ASP.NET. Je classe avec de nombreuses propriétés et voudrais sérialisation cinq d'entre eux (chaîne, entier, binaire) à JSON. Quelqu'un pourrait-il par exemple post simple, comment créer un objet JSon de ma classe?

Était-ce utile?

La solution

ServiceStack sera désérialiser toutes les propriétés publiques d'un POCO par défaut.

Si vous voulez seulement sérialisation que quelques-unes des propriétés vous voulez décorer votre classe avec [DataContract], [DataMember] attributs (de la même manière que vous le feriez si vous utilisez MS DataContractJsonSerializer), par exemple:

[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; }
}

Ensuite, vous pouvez utiliser soit les méthodes utilitaires statiques sur JsonSerializer à (De) serialize, ou les méthodes d'extension plus laconiques, par exemple:

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

Edit:

@Noah mentionne (des commentaires), vous pouvez également utiliser le [IgnoreDataMember] attribut pour exclure une seule propriété.

Autres conseils

Vous pouvez utiliser l'attribut [Serializable()] sur votre classe personnalisée puis:

JavaScriptSerializer serializer = new JavaScriptSerializer();

var Json = serializer.Serialize(myObject);

Pour ignorer les propriétés spécifiques de l'objet que vous sérialisation, placez simplement le attribure de [NonSerialized] sur eux.

Mise à jour:

Étant donné que vous souhaitez utiliser ServiceStack pour faire votre sérialisation, le site donne ServiceStack l'exemple suivant:

var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = JsonSerializer.SerializeToString(customer);
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json);

Source: http://www.servicestack.net/mythz_blog/?p=344

test de servicestack prouve qu'en fournissant l'attribut [DataContract] et [DataMember] vous permet de déterminer lequel est en feuilleton et qui ne fonctionne pas.

Test: https: // github.com/ServiceStack/ServiceStack.Text/blob/master/tests/ServiceStack.Text.Tests/DataContractTests.cs

objets dans le test: https://github.com/ServiceStack/ServiceStack.Text/blob/master/tests/ServiceStack.Text.Tests/Support/DdnDtos.cs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top