2017-10-18 22 views
0

L'utilisation de Json.NET permet-elle de sérialiser les champs d'un objet à la place de l'objet lui-même?Propriétés d'objet Json.NET Serialize sans parent

Dans JMS Serializer (PHP), je peux utiliser l'annotation @Inline.

public class ApiResponseData 
{ 
    public User User { get; set; } 
} 

public class User 
{ 
    public string Username { get; set; } 
    public string Firstname { get; set; } 
    public string Lastname { get; set; } 
} 

Si je sérialiser ApiResponseData Je voudrais simplement obtenir le nom d'utilisateur, nom et prénom, pas la propriété de l'utilisateur.

Actual:{ "user": { "username": "username", "firstname": "firstname", "lastname": "lastname" } }
désiré:{ "username": "username", "firstname": "firstname", "lastname": "lastname" }

+0

quel était le problème avec l'utilisation de 'JsonConvert.SerializeObject (apiResponseData.User)'? – Alex

+0

@Alex J'ai omis un peu de contexte mais ApiResponseData implémente ApiResponse et devrait avoir un utilisateur comme corps (mais sans la propriété "user" sérialisée "puisque j'utilise User comme classe d'entité). D'autres classes ApiResponse peuvent avoir d'autres classes/properties – StockBreak

+0

Vous pouvez remplacer un convertisseur json personnalisé comme ceci https://stackoverflow.com/questions/40862660/how-to-inline-a-property-in-resulting-json-with-json-net –

Répondre

0

Vous pouvez essayer de sérialisation ApiResponseData.User au lieu de sérialisation ApiResponseData lui-même. De cette façon, il ne sérialisera que les valeurs de ApiResponseData.User. Comme:

Newtonsoft.Json.JsonConvert.SerializeObject(ApiResponseData.User); 
+0

Oui , c'est ce que je fais en ce moment.Ce n'est pas une solution très propre, l'annotation @Inline de JMS est très utile.Pouvez-vous confirmer qu'il n'y a pas un tel attribut dans Json.NET? – StockBreak

0

Dans les classes qui contiennent des objets de cette classe, vous pouvez ajouter des propriétés internes qui renvoient la valeur du membre que vous souhaitez sérialiser. Pas la solution la plus élégante, mais cela fonctionne.