Il s'agit de la sérialisation json. Voici la situation:Spécifiez les champs à sérialiser avec JSON
public class Book
{
public string BookName { get; set; }
public decimal BookPrice { get; set; }
public string AuthorName { get; set; }
public int AuthorAge { get; set; }
public string AuthorCountry { get; set; }
}
public class MyBag{
public string owner {get; set;}
public Book math_Book{get; set;}
}
livre a plusieurs champs, mais pas tous sont nécessaires pour serialiazed. par exemple, je veux seulement connaître le BookName et le BookPrice. et je voudrais spécifier les noms des champs et personnaliser jsonPropertyAttribute. Tout comme ceci:
public class MyBag{
public string owner {get; set;}
[JsonProperty(serializedFields("BookName", "BookPrice"))]
public Book math_Book{get; set;}
}
Est-ce que JSON a la particularité de personnaliser JsonPropertyAttribute? ou comment puis-je faire pour que cela fonctionne?
Depuis que je ne trouve pas comment créer JsonPropertyAttribute personnaliser, je crée customizeAttribute pour objet Csharp, comme ceci:
public class SerializedFieldsAttribute : Attribute
{
private IList<string> _serializedFields = new List<string>();
public SerializedFieldsAttribute(string[] fields)
{
_serializedFields = fields;
}
public IList<string> GetFields()
{
return _serializedFields;
}
}
public class MyBag
{
public String Owner { get; set; }
[SerializedFieldsAttribute(new string[] { "BookName", "BookPrice" })]
public Book MyBook { get; set; }
}
maintenant je peux obtenir le SerializedFieldsAttribute, mais comment puis-je faire pour
var book = new Book
{
BookName = "Yu Wen",
BookPrice = 56,
AuthorName = "Li QingZhao",
AuthorAge = 28,
AuthorCountry = "Song"
};
var bag = new MyBag
{
Owner = "shoren",
MyBook = book
};
à
{
"Owner": "shoren",
"MyBook": {
"BookName": "Yu Wen",
"BookPrice": 56.0,
}
}
Essayez ce [lien] (http://dotnet.dzone.com/news/serialize-only-specific-class). Faites-moi savoir si ça aide. – Nilesh
merci, mais ce n'est pas mon problème. Je voudrais que le sérialiseur Json analyse l'attribut personnalisé. Par exemple, a est une instance de classe A, string result = JsonConvert.SerializeObject (a); le résultat montrerait que myData n'a que deux champs, DataVersion et DataId. – shoren