2012-03-12 3 views
1

Je cherche un analyseur JSON et un encodeur pour .NET qui peuvent analyser JSON dans sa propre structure de données que je peux ensuite parcourir, par opposition à la désérialisation directe dans une classe. En Java, j'utilise JettisonJSONObject et JSONArray qui est mort facile à utiliser.Parse/Encode JSON sans classes de désérialisation/sérialisation

Il y a un certain nombre de raisons pour lesquelles je ne veux pas (de) serialize:

  1. Sérialiseurs ont tendance à ajouter des métadonnées au JSON et exiger que les métadonnées pour désérialisation (par exemple fastJSON et JSON.NET ajouter tapez info).
  2. Je ne veux pas avoir à créer un tas de classes pour gérer tous les types de données. De plus, je veux pouvoir ignorer les champs qui ne m'intéressent pas plutôt que d'avoir à leur ajouter des propriétés.

Y a-t-il quelque chose de disponible ou dois-je porter un sous-ensemble de Jettison?

Répondre

0

Les inconvénients de sérialisation que vous le soulignez ne sont pas vraiment là, au moins dans le cas de JSON.NET:

  1. JSON.NET ne pas ajouter de métadonnées par défaut. Vous pouvez lui indiquer d'ajouter les métadonnées si vous en avez besoin (par exemple, lorsqu'une propriété peut contenir des valeurs de types différents), mais c'est facultatif. Sauf que vous le remplacez par les tracas de travailler avec des cordes et des moulages, ce qui, je pense, est bien pire. En outre, vous pouvez ignorer les champs qui ne vous intéressent pas, mais ne les ajoutez pas à vos types.

Mais, si vous voulez vraiment faire cela, vous pouvez. Les types équivalents sont JObject et JArray, donc, si vous voulez désérialiser un objet, il suffit d'utiliser:

JObject obj = JsonConvert.DeserializeObject<JObject>(json); 

Comme une autre option, vous ne devez pas spécifier le type que vous voulez du tout, fourmi, il retournera soit JObject ou JArray:

object objectOrArray = JsonConvert.DeserializeObject(json); 
+0

Merci, cela devrait le faire. 'JSonConvert.DeserializeObject (json)' est équivalent à 'new JSONObject (json)' dans Jettison. –