2010-03-31 11 views
2

J'écris une application Android. Je veux transmettre des données à travers les intentions/activités et je pense qu'une conversion depuis et vers JSON est probablement un moyen plus optimal à ce stade. Je suis capable de convertir une hashmap java en une chaîne JSON avec succès en utilisant le support JSONObject.Convertir une chaîne JSON en objet Java ou HashMap

Cependant, j'ai besoin de convertir cette chaîne JSON en un objet java ou un hashmap. Quelle est la meilleure façon de s'y prendre?

Est-ce que le parcelable est vraiment un changement qui vaut la peine d'être fait; si j'ai un simple objet de 5 champs? Quelles sont les autres façons de transférer des données entre les intentions.

Vive

Répondre

5

Je recommande de choisir Gson pour cela. Il a un excellent support pour les génériques et les Javabeans complets et facilite vraiment la tâche de conversion. En this answer vous pouvez trouver un exemple pour convertir un Map<String, String> en JSON et vice versa, et dans this answer un autre exemple pour convertir une chaîne JSON à un Javabean fullworthy (de Javabean à JSON est assez simple avec gson.toJson(bean).

Autres façons de transférer des données sont XML et sérialisation, les deux qui ont beaucoup plus de frais généraux que JSON.

2

Vous pouvez passer Serializable s avec Intent s, pas besoin de JSON.

3

Pourquoi ne pas utiliser Bundle comme Map? Il peut être mis dans un Intent facilement un nd est fondamentalement un typesafe glorifié HashMap.

Si vous avez encore besoin d'utiliser JSON, je recommanderais Jackson. Il est facile et rapide (plus rapide que GSON) de convertir vers et à partir d'objets Java (y compris Maps)

1

JSON est un mauvais choix si vous avez des données numériques ... tout ce qui ne peut être représenté comme un double (et même quelques valeurs doubles). sauf si vous devez communiquer avec JavaScript, vous devriez éviter JSON.

+0

Ceci est incorrect. JSON a un type de nombre générique, mais qui peut contenir des nombres entiers simples, et cela dépend de la bibliothèque si elle est exposée en tant que virgule flottante ou non. Et plus spécifiquement, la plupart des bibliothèques Java JSON les traitent de manière propre et efficace. Peut-être que vous avez eu une mauvaise expérience avec certaines bibliothèques? – StaxMan

+0

ce n'est tout simplement pas vrai. exemple aléatoire: l'implémentation de json.org est brisée de la manière que je décris. vous ne voudriez probablement pas une bibliothèque JSON "fixe" de toute façon, car alors ce serait incompatible avec JavaScript lui-même. –

Questions connexes