2011-10-29 5 views
3

J'ai été en mesure d'analyser avec succès la chaîne JSON ci-dessous dans Android en utilisant JSONObject et JSONArray. N'ont pas réussi à atteindre le même résultat avec GSON ou Jackson. Quelqu'un peut-il m'aider avec des fragments de code, y compris les définitions POJO pour analyser cela avec GSON et Jackson?GSON/Jackson dans Android

{ 
    "response":{ 
     "status":200 
    }, 
    "items":[ 
     { 
      "item":{ 
       "body":"Computing" 
       "subject":"Math" 
       "attachment":false, 
     } 
    }, 
    { 
     "item":{ 
      "body":"Analytics" 
      "subject":"Quant" 
      "attachment":true, 
     } 
    }, 

], 
"score":10, 
"thesis":{ 
     "submitted":false, 
     "title":"Masters" 
     "field":"Sciences",   
    } 
} 
+1

Peut-être que vous pourriez inclure des définitions de POJO vous avez essayé, pour donner une idée de ce qui aurait pu mal tourné? L'idée de base est juste pour faire correspondre les structures. – StaxMan

+0

En outre, lors de la publication d'une question, je recommande de faire l'effort de s'assurer que tout code ou exemples JSON sont valides et corrects. L'exemple JSON dans la question d'origine n'est pas valide et laisse les personnes qui pourraient aider ou apprendre de ce thread à deviner quoi faire. http://jsonlint.com peut être utilisé pour valider rapidement et facilement JSON. –

Répondre

8

Voici des exemples simples d'utilisation Gson et Jackson à désérialisation/sérialisation JSON (similaire à la JSON invalide dans la question initiale) à/à partir d'une structure de données Java correspondant.

Le JSON:

{ 
    "response": { 
     "status": 200 
    }, 
    "items": [ 
     { 
      "item": { 
       "body": "Computing", 
       "subject": "Math", 
       "attachment": false 
      } 
     }, 
     { 
      "item": { 
       "body": "Analytics", 
       "subject": "Quant", 
       "attachment": true 
      } 
     } 
    ], 
    "score": 10, 
    "thesis": { 
     "submitted": false, 
     "title": "Masters", 
     "field": "Sciences" 
    } 
} 

La structure de données Java Matching:

class Thing 
{ 
    Response response; 
    ItemWrapper[] items; 
    int score; 
    Thesis thesis; 
} 

class Response 
{ 
    int status; 
} 

class ItemWrapper 
{ 
    Item item; 
} 

class Item 
{ 
    String body; 
    String subject; 
    boolean attachment; 
} 

class Thesis 
{ 
    boolean submitted; 
    String title; 
    String field; 
} 

Jackson Exemple:

import java.io.File; 

import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility; 
import org.codehaus.jackson.map.ObjectMapper; 

public class JacksonFoo 
{ 
    public static void main(String[] args) throws Exception 
    { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.setVisibilityChecker( 
     mapper.getVisibilityChecker() 
     .withFieldVisibility(Visibility.ANY)); 
    Thing thing = mapper.readValue(new File("input.json"), Thing.class); 
    System.out.println(mapper.writeValueAsString(thing)); 
    } 
} 

Gson Exemple:

import java.io.FileReader; 

import com.google.gson.Gson; 

public class GsonFoo 
{ 
    public static void main(String[] args) throws Exception 
    { 
    Gson gson = new Gson(); 
    Thing thing = gson.fromJson(new FileReader("input.json"), Thing.class); 
    System.out.println(gson.toJson(thing)); 
    } 
}