Les web api sérialiser dictionnaire avec la valeur de la clé comme clé à l'aide de l'attribut de données
J'ai un dictionnaire dont je suis la sérialisation à l'aide de la json.net sérialiseur, et il est en train de produire
{"phrases":[{"Key":"my-key1","Value":"blah"},{"Key":"my-key2","Value":"blah2"}]}
cependant, je veux à la sortie
{"phrases":["my-key1":"blah"},{"my-key2":"blah2"}]}
mon modèle ressemble
public class Phrases
{
public Dictionary<string, string> phrases;
}
Est-il un attribut de données que je peux appliquer à des phrases du modèle à l'origine de ce problème?
J'ai trouvé ce qui suit, mais ne veulent pas retourner une chaîne de Sérialiser à une valeur-clé de dictionnaire avec Json.Net?
Mise à JOUR:
Je suis l'extension de l'api web contrôleur comme suit, si j'utilise JsonConvert.SerializeObject() je ne reçois le bon de sérialisation , mais je ne puis avoir une chaîne de retour.
public class PhraseController : ApiController
{
private IApplicationModel applicationModel;
public Phrases Get(string id)
{
var locale = new CultureInfo(id).LCID;
var phrases = applicationModel.Phrases.Where(x => x.Locale = locale).ToDictionary(x => x.Name, y => y.Value);
return new Phrases() { phrases = phrases };
}
public PhraseController(IApplicationModel applicationModel)
{
this.applicationModel = applicationModel;
}
}
Qui json.net version utilisez-vous? Parce que le
avoir mis à jour ma question
Je me demande si mon problème est qu'il est encore à l'aide de la DataContractJsonSerializer au lieu de json.net
"Newtonsoft.Json" version="4.0.8"
ce produit: {"phrases":{"my-key1":"blah","my-key2":"blah2"}}
à l'aide de JsonConvert.SerializeObject(phrases);
avoir mis à jour ma question
Je me demande si mon problème est qu'il est encore à l'aide de la DataContractJsonSerializer au lieu de json.net
OriginalL'auteur Tom | 2012-05-18
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à le faire fonctionner à la fin.
Problème était qu'il était encore à l'aide de la
DataContractJsonSerializer
. J'ai ajouté une ligne de retrait des formateurs avant d'ajouter leJsonNetFormatter
et il sérialise maintenant correctement.(J'utilise la version bêta qui utilise toujours la DataContractJsonSerializer)
OriginalL'auteur Tom