Comment convertir arbitraire JSON utilisable à structure en Java

Je suis en train d'utiliser gson pour convertir cette retourné JSON dans une sorte de
structure de données telle que je peux extraire des données utiles.

Par Exemple:

http://search.twitter.com/search.json?q=test&rpp=1

Retourne:

{
    "completed_in":0.028,
    "max_id":196386333906837504,
    "max_id_str":"196386333906837504",
    "next_page":"?page=2&max_id=196386333906837504&q=test&rpp=1",
    "page":1,
    "query":"test",
    "refresh_url":"?since_id=196386333906837504&q=test",
       "results":[
          {
             "created_at":"Sat, 28 Apr 2012 23:52:05 +0000",
             "from_user":"della_ky",
             "from_user_id":525641596,
             "from_user_id_str":"525641596",
             "from_user_name":"kydella modeste",
             "geo":null,
             "id":196386333906837504,
             "id_str":"196386333906837504",
             "iso_language_code":"en",
             "metadata":{
                "result_type":"recent"
             },
             "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2159990525\/webcam-toy-photo3_20_2__normal.jpg",
             "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/2159990525\/webcam-toy-photo3_20_2__normal.jpg",
             "source":"<a href="http:\/\/mobile.twitter.com" rel="nofollow">Mobile Web<\/a>",
             "text":"RT @Y__U__NOOO: #SongsIKnowOffByHeart ALL SONGS I LISTEN TO. BRAIN, Y U NO REMEMBER TEST ANSWERS LIKE THAT?!?",
             "to_user":null,
             "to_user_id":null,
             "to_user_id_str":null,
             "to_user_name":null
          }
       ],
       "results_per_page":1,
       "since_id":0,
       "since_id_str":"0"
    }

En fin de compte, je voudrais être en mesure de produire une liste de tweets avec le
nom de l'expéditeur et la date/heure du tweet.

J'ai lu à travers le gson de la documentation, mais ce qui se passe dans ma tête
pour être honnête, beaucoup de nouveaux concepts là pour moi.

Ai-je besoin de définir une classe qui correspond exactement à la structure de la
JSON afin, ensuite, de remplir une instance de cette classe? Si ce
semble très rigide/laborieuse. Idéalement, je suis à la recherche de quelque chose
qui va gérer JSON dans un formulaire et de me donner une structure que je peux utiliser
automatiquement...

Quelqu'un est-il en mesure de me donner quelques conseils? Étant nouveau sur ce - le plus
détaillée et dans les mots de moins de syllabes mieux!

Mise à jour - Merci pour les réponses, j'ai déjà eu sur ce que j'ai eu un aller à faire une classe pour saisir le twitter JSON. Cependant, depuis le JSON est intégré dans ArrayList d'Objets, je suis un peu en difficulté... pour l'instant j'ai

public class tweetData {
    private double completed_in;
    private long max_id;
    private long max_id_str;
    private String next_page;
    private int page;
    private String query;
    private String refresh_url;
    private List<tweetDetails> tweets = new ArrayList<tweetDetails>();
}

et

public class tweetDetails {
    private String created_at;
    private String from_user;
    private long from_user_id;
    private long from_user_id_str;
    private String from_user_name;
    private String geo;
    private long id;
    private long id_str;
    private String iso_language_code;
// "metadata":
// {
// "result_type":"recent"
// },
    private String profile_image_url;
    private String profile_image_url_https;
    private String source;
    private String text;
    private String to_user;
    private String to_user_id;
    private String to_user_id_str;
    private String to_user_name;
}

Dont je suis l'instanciation avec

URI uri = new URI("http", "search.twitter.com", "/search.json", "q="+ searchTerms + "&rrp=" + RRP, null);
URL twitterSearch = uri.toURL();
URLConnection yc = twitterSearch.openConnection();
JsonReader reader = new JsonReader(new InputStreamReader(yc.getInputStream()));
Gson gson = new Gson();
tweetData data = gson.fromJson(reader, tweetData.class);
System.out.println(data);

Nom de la base:les valeurs sont correctement renseignées, mais le Dernier ne l'est pas.

tweetData : 0.17196614959919140865196614959919140865?page=2&max_id=196614959919140865&q=test1test?since_id=196614959919140865&q=testSIZE 0[]

Je suis donc toujours un peu en difficulté - plus de conseils, très apprécié!

Tia,
Tom

Avez-vous envisager de Jackson bibliothèque?

OriginalL'auteur Tom | 2012-04-29