Mon objet JSON ressemble à ceci:J'utilise JsonReader dans Android, et j'ai besoin d'une valeur à l'intérieur de l'objet en cours avant l'analyse d'un objet interne
{
id: 1
object:
{
object_id:1
key_for_1: "value for object type 1"
}
type: "object_type_1"
}
{
id: 2
object:
{
object_id:5
key_for_23: "value for object type 23"
}
type: "object_type_23"
}
Donc, en gros j'ai besoin « type » avant de pouvoir analyser l'objet. Y at-il un moyen de s'assurer que je peux saisir la valeur pour "type" avant de saisir "objet"? JsonReader utilise à peu près les mêmes méthodes que GSON. Voici comment je l'analyser:
public CustomObject(JsonReader reader) throws IOException {
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("id")) {
clId = reader.nextDouble();
}
else if (name.equals("object")) {
innerObject = new InnerObject(reader);
}
else if (name.equals("type")) {
type = reader.nextString();
}
}
reader.endObject();
}
Je ne veux pas simplement utiliser un constructeur de chaîne parce que l'objet JSON réel je reviens est énorme (l'est au-dessus juste un échantillon). J'ai d'abord essayé StringBuilder et je vois pas mal de problèmes de mémoire, c'est pourquoi je voulais passer à JsonReader.
Toute aide serait géniale. Merci
oui, désolé la structure est pas parfait. Je voulais juste donner un exemple. Fondamentalement, on me donne un tableau d'objets JSON et chacun d'eux a 3 clés (celles ci-dessus). Pour utiliser org.json j'ai besoin de convertir le Json en une chaîne que je voulais éviter – Sree
Quand vous dites que vous avez besoin de le convertir en chaîne, qu'est-ce que cela implique? Parce qu'un objet JSON peut avoir différentes paires clé-valeur, avec les valeurs étant String, integer, boolean etc. Par exemple. { "Montant": 100,50, "âge": 30, "is_adult": true, "name": "foo" } Pour votre tableau d'objets JSON, aurait-il OBJECT_ID pour chaque élément d'objet jsonArray. Parce que je vois 2 identifiants. Si vous pouviez donner un exemple d'un objet Json valide avec des éléments au cas où je serais capable d'hep avec l'analyse. –
Donc, en gros, je récupère la sortie de HTTPUrlConnection (qui est json) et la compile en utilisant un constructeur de chaîne. Ensuite, je nourris la chaîne dans un JSONObject. JSONObject fetchedNewsFeedObjects = new JSONObject (sb.toString()); Donc, je "convertis" le JSON en une chaîne de caractères afin que je puisse le nourrir dans l'objet JSONObject. Cela avait-il du sens? – Sree