2016-09-01 1 views
1

J'essaie de télécharger des données json où l'un des attributs est "easting". Pour la majorité du jeu de données JSON, "easting" est un entier, mais il y a une poignée de cas où "easting" une liste des nombres entiers comme indiqué ci-dessous:Comment gérer l'entrée d'un type de données différent pendant la désérialisation?

"easting" : 357570 , 
... 
"easting" : [ 434939, 434942 ] , 

Mon code d'origine avait prévu "easting" être un int quand sa classe a été déclarée comme suit:

public class Item 
{ 
    public int easting { get; set; } 
} 

Cependant, je continue à avoir des erreurs en disant que je ne peux pas convertir un type int à un type int []. Si j'ajuste la définition de classe pour permettre easting d'être de type int [], j'obtiens simplement l'erreur inverse - je ne peux pas convertir un type int [] en un type int.

Comment puis-je m'occuper de cela? Existe-t-il un moyen de rendre compte d'un type de données d'entrée variable pendant le processus de désérialisation?

+0

Pouvez-vous utiliser une dynamique? Vérifiez cela: http://stackoverflow.com/questions/30147272/serialize-a-json-property-that-is-sometimes-an-array – jpgrassi

+1

Si vous utilisez Json.net, alors ceci est une copie de [ cette question] (http://stackoverflow.com/questions/18994685/how-to-handle-both-a-single-item-and-an-array-for-the-same-property-using-json-n) – stuartd

+0

@stuartd J'utilise actuellement 'JavaScriptSerializer' de' System.Web.Script.Serialization', bien que je puisse essayer de passer à Json.net car cet exemple semble simple. Merci. – jcusick

Répondre

0

En fin de compte, j'ai suivi la suggestion de @stuartd et swtiched JavaScriptSerializer-Json.net pour le processus de désérialisation, ce qui m'a permis de suivre avec le question posted here et résoudre mon problème.