lundi 17 janvier 2011

Parser JSON en JAVA et en toute simplicité

Bonjour, bonsoir

Pendant quelques temps j'ai cherché à générer et à parser des fichiers JSON.

J'ai utilisé http://www.json.org/java/ qui est très simple d'utilisation mais pas très pratique.
Puis un jour je suis tombé sur un parser HAR (qui est au format JSON) qui était codé tout simplement.
Il utilisait la librairie Jackson JSON Parser : http://wiki.fasterxml.com/JacksonInFiveMinutes

Avec Jackon, il suffit de créer un objet java (POJO) et lui dire de remplir cet objet à l'aide d'un fichier JSON (ou d'un String)

Je vous laisse découvrir la complexité de la chose :)




import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.codehaus.jackson.map.ObjectMapper;
public class HarParser {
    private static ObjectMapper mapper = new ObjectMapper();
    /**
* Parse a JSON HAR
*
* @param har a JSON String
* @return the HarLog representation
* @throws IOException if file not found
*/
    public static Har parseHAR(String har) throws IOException {
        Har value = mapper.readValue(har, Har.class);
        return value;
    }
}

https://github.com/Filirom1/browsermob-proxy/blob/master/src/main/java/com/browsermob/core/har/HarParser.java


Voici le fichier JSON à parser :
https://github.com/Filirom1/browsermob-proxy/blob/master/src/test/resources/ysearch.har


Et voici le test unitaire associé :


    @Test
    public void browser() {
        String fileName = this.getClass().getResource("/ysearch.har").getFile();
        try {
            Har har = HarParser.parseHarFromFile(new File(fileName));
            HarLog ysearch = har.getLog();
            String harBrowser = ysearch.getBrowser().getName();
            assertEquals("browser name", "Firefox", harBrowser);
        } catch (Exception ex) {
            fail("Exception occurs "+ex.getMessage());
        }
    }

Aucun commentaire:

Enregistrer un commentaire