Récupérer des valeurs d'un document JSON sur Java

JSON se base sur deux structures:
  • Une collection de couples nom/valeur. Divers langages la réifient par un objet, un enregistrement, une structure, un dictionnaire, une table de hachage, une liste typée ou un tableau associatif.
  • Une liste de valeurs ordonnées. La plupart des langages la réifient par un tableau, un vecteur, une liste ou une suite.
  • Pour accèder aux valeurs d'un document JSON depuis un code Java, nous utiliserons les bibliothèques JSON, EZMorph, Apache et SLF4J, à télécharger ici.
    Le document JSON ci-dessous est un simple exemple cité sur Wikipédia, il servira comme exemple pour avoir les valeurs des clés "value" et "onclick"
       {
           "menu": {
               "id": "file",
               "value": "File",
               "popup": {
                   "menuitem": [
                       { "value": "New", "onclick": "CreateNewDoc()" },
                       { "value": "Open", "onclick": "OpenDoc()" },
                       { "value": "Close", "onclick": "CloseDoc()" }
                   ]
               }
           }
       }
      
       import net.sf.json.*;
    
       public static void main(String[] args) {
              //Document JSON
              String JSON = "{\"menu\": {\"id\": \"file\",\"value\": \"File\",\"popup\": {\"menuitem\": [{ \"value\": \"New\", \"onclick\": \"CreateNewDoc()\" },{ \"value\": \"Open\", \"onclick\": \"OpenDoc()\" },{ \"value\": \"Close\", \"onclick\": \"CloseDoc()\" }]}}}";
              
              JSONObject json = (JSONObject) JSONSerializer.toJSON(JSON); 
              JSONObject response = json.getJSONObject("menu");
              JSONObject folder_content = response.getJSONObject("popup");
              JSONArray files = folder_content.getJSONArray("menuitem");
              for(int i=0; i‹files.size();i++){
                  System.out.println(files.getJSONObject(i).getString("value")+"\t"+files.getJSONObject(i).getString("onclick"));
              }
          }
      
    En sortie de console...
       New CreateNewDoc()
       Open OpenDoc()
       Close CloseDoc()
      

    Envoyer une requête (POST) HTTP sur Java - Exemple de MediaFire REST API

    Le code ci-dessous montre un exemple de requête HTTP envoyé sur Java pour se connecter à un compte MediaFire via l'API REST de MediaFire (Méthode get_session_token()).
    Cet exemple de requête est valide pour tout autre requête
       import java.io.BufferedReader;
       import java.io.DataOutputStream;
       import java.io.IOException;
       import java.io.InputStreamReader;
       import java.net.URL;
       import javax.net.ssl.HttpsURLConnection;
       
       public void get_session_token() throws IOException{
              String url = "https://www.mediafire.com/api/user/get_session_token.php";
                 URL obj = new URL(url);
                 HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
     
                 //add reuqest header
                 con.setRequestMethod("POST");
                 
                 String urlParameters = "email=adresse@electronique.com&password=motDePasse
                         &application_id=9999&signature=d9ce3bfa...6e36b4ee8c71
                         &response_format=json";
     
                 // Envoyer la requête
                 con.setDoOutput(true);
                 DataOutputStream wr = new DataOutputStream(con.getOutputStream());
                 wr.writeBytes(urlParameters);
                 wr.flush();
                 wr.close();
                 
                 // Récupérer le résultat
                 BufferedReader in = new BufferedReader(
                         new InputStreamReader(con.getInputStream()));
                 String inputLine;
                 StringBuffer response = new StringBuffer();
     
                 while ((inputLine = in.readLine()) != null) {
                         response.append(inputLine);
                 }
                 in.close();
     
                 //Afficher le résultat
                 System.out.println(response.toString());
          }
      
    S'affichera en sortie de console le résultat de la requête HTTP, dans ce cas au format JSON comme demandé sur la requête (&response_format=json).
       {"response":
        {"action":
         "user\/get_session_token",
         "session_token":"3352706986bcaa2dfb...f30ae2989d6a9634",
         "result":"Success",
         "current_api_version":"2.13"
        }
       }
      

    Créer une connexion à un serveur distant MongoDB pour une application Java

    Mettre en place une base de données distante pour une application Java est appréciable pour mettre encore plus en avant la portabilité du langage Java et de ses applications.
    Le code ci-dessous crée une connexion distante avec une base de données MongoDB sur MongoLab, sans oublier d'ajouter mongo-java-driver au classpath...
       import com.mongodb.Mongo;
       import com.mongodb.DB;
       import java.net.UnknownHostException;
       
       import java.util.Set;
       /**
        *
        * @author elkrari
        */
       public class AuthentificationMongoDB {
           public static void main(String[] args) throws UnknownHostException {
               Mongo mongoClient = new Mongo( "Adresse Serveur" , N°Port );
               DB db = mongoClient.getDB( "BaseDeDonnées" );
               boolean auth = db.authenticate("Utilisateur", new String("MotDePasse").toCharArray() );
               Set collections = db.getCollectionNames();
               for (String s : collections) {
                   System.out.println(s);
               }
           }
       }
      
    S'affichera en sortie de console les collections de la base de données interrogée

    Convertir une chaîne de caractères ( String ) en tableau de caractères ( Char[] )

    Les tableau de chaînes de caractères sont souvent utilisés dans les méthodes d'authentification et de connexion, pour convertir une chaîne de caractères en tableau de caractères, on fait appel à la méthode String.toCharArray()
       public static void main(String[] args) {
              String mdp = "motDePasse";
              char[] mdpEnTableau = mdp.toCharArray();
              for(char temp: mdpEnTableau){
                      System.out.println(temp);
              }
          }
    S'affichera en sortie de console:
       m
       o
       t
       D
       e
       P
       a
       s
       s
       e

    Article 1

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean placerat nisl enim, in cursus ligula sodales quis. Mauris nisl enim, convallis non viverra sed, varius ut velit. Sed rhoncus massa sit amet tortor interdum egestas. Phasellus nec risus convallis dolor aliquet mattis sit amet ut felis. Ut eu est blandit, ultricies nunc et, malesuada lectus. Nam sed lacus id turpis laoreet luctus ac ac sapien. Phasellus mattis sapien massa, et porta odio faucibus et.
    Donec nec dolor sapien. Aliquam ac faucibus tortor. Suspendisse fermentum mi eget tempus adipiscing. Donec cursus neque at mauris porta, id aliquam nibh rutrum. Sed vehicula odio massa, id malesuada ligula volutpat vitae. Etiam laoreet erat vel sodales hendrerit. Nam ac nulla a leo elementum lacinia vel ac nisi. Donec id lorem vel massa feugiat sollicitudin eget nec dolor. Morbi aliquet consectetur nulla, in fringilla ante sagittis sed. Nullam suscipit commodo luctus.
    Vivamus semper dignissim lorem, sit amet gravida velit laoreet at. Donec vestibulum lorem in urna euismod, a lobortis augue elementum. Mauris in metus in quam aliquet sagittis. Integer gravida tellus felis, id iaculis odio fringilla vitae. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi a ipsum vel ante rutrum sagittis nec in massa. Sed non nisl quam. Phasellus interdum ultricies elit, sed dapibus diam interdum nec. Morbi mattis, ipsum vitae ultricies porttitor, neque purus volutpat velit, adipiscing cursus lectus quam id nunc.