9
votes

Json.net personnalisé jsonconverter en cours d'ignorance

J'ai une classe générique dont je veux sérialiser avec la valeur d'un seul de ses attributs.

à cette fin, j'ai écrit un jsonconverter personnalisé et l'attachée à la base de la base Classe avec le JSONCONVERTER (TYPE) Attribut - Cependant, il ne semble pas jamais être appelé. Pour référence, comme indiqué dans l'exemple ci-dessous, je suis sérialisé une liste <> de l'objet à l'aide du système system.web.mvc.controller.json () méthode. < / p>

S'il y a une meilleure façon de réaliser le même résultat, je suis absolument ouvert aux suggestions.

< / p>

fonction de la vue xxx

jsonconverter personnalisé xxx

Classe de base foo xxx

FOO implémentation xxx

sortie actuelle xxx

sortie souhaitée xxx


0 commentaires

3 Réponses :


2
votes

Documentation dit: Pour appliquer un convertisseur JSON aux éléments d'une collection, utilisez JSONARRAYATTRIBUTE, JSONDICTIONRYATTRibute ou JSONPROPERTYATTRIBUT et définissez la propriété ItemConverterType sur le type de convertisseur que vous souhaitez utiliser.

http://james.newtonking.com/json/help/html/ SerializationAttributes.htm

Peut-être que cela aidera.


1 commentaires

Je vais regarder, merci. Passé des siècles à rouler dans les documents, mais je ne savais pas vraiment ce que je cherchais.



7
votes

Tout d'abord du système.web.mvc.controller.json () ne fonctionne pas avec json.net - il utilise JavasCriptsérializer qui ne connaît rien de votre gouffre JSON.NET. Si vous souhaitez toujours utiliser System.Web.MVC.Controller.json () Appelez, vous devriez faire quelque chose comme Ce . Changer également Erriversjson à ceci:
XXX

Je pense que cela devrait faire fonctionner votre code.


4 commentaires

J'étais sous l'impression que cela l'a fait, mais ne serait-il pas surpris de ce que j'avais tort - c'était peut-être autre chose qui a tiré json.net comme une dépendance. Merci pour l'article, je vais lui donner une lecture.


ASP.NET WebAPI utilise json.net comme sérialisateur JSON, mais ASP.NET MVC ne le fait pas. Je sais que c'est déroutant.


Ah, ça aurait été ça.


Peut confirmer que c'était la question sous-jacente. Merci pour votre aide.



1
votes

Qu'est-il arrivé à moi était, j'ai ajouté le à l'aide de automatiquement comme suggéré par Visual Studio. Et par erreur ajoutée à l'aide de system.text.json.serialization; au lieu de à l'aide de newtonsoft.json;

alors j'utilisais system.text.json.serialization.jsonconverterattribute sur la classe cible. Qui est (correctement) ignoré par json.net.


0 commentaires