2010-10-08 5 views
1

Je crée une application LinkedIn composée principalement de JavaScript et de Flash, mais toutes les données proviennent d'un proxy Java. J'ai besoin que les données soient en JSON, et malheureusement, LinkedIn ne supporte que le XML. La meilleure solution consiste à convertir XML en JSON sur le serveur avant de le renvoyer au client, mais il est vrai que mes compétences Java ne sont pas solides. J'ai le code qui semble fonctionner, mais j'obtiens une exception JSONObject.Conversion de données XML LinkedIn en JSON en Java

J'utilise le package org.json pour manipuler le XML: http://json.org/java/

Voici l'extrait de code Java qui tente de convertir XML en JSON. Ce n'est pas assez, mais je suis juste essayer de faire quelques progrès à la conversion des données:

public static String readResponse(HttpResponse response) { 
    System.out.println("Reading response..."); 

    try { 
     BufferedReader br = new BufferedReader(new InputStreamReader(
       response.getEntity().getContent())); 
     String readLine; 
     String innhold = ""; 

     while (((readLine = br.readLine()) != null)) { 
      innhold += readLine; 
     } 

     try { 
      JSONObject myJ = new JSONObject(); 
      String ret = myJ.getJSONObject(innhold).toString(); 
      System.out.println(ret); 

      return ret; 
     } catch (Exception e) { 
      System.out.println(e); 
     } 

     return innhold; 
    } catch (IOException e) { 
     System.out.println(e); 
     return null; 
    } 
} 

Voici des données très semblable à ce que je suis en train de convertir:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<person> 
    <first-name>First</first-name> 
    <last-name>Last</last-name> 
    <headline>My Profile</headline>  
    <site-standard-profile-request>  
    <url>http://www.linkedin.com/profile</url> 
    </site-standard-profile-request> 
</person> 

Et est ici la exception je reçois:

org.json.JSONException: JSONObject["<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person> <first-name>First<\/first-name> <last-name>Last<\/last-name> <headline>My Profile<\/headline> <site-standard-profile-request> <url>http://www.linkedin.com/profile<\/url> <\/site-standard-profile-request><\/person>"] not found. 

Toute aide est appréciée, merci!

Répondre

0

Il semble que vous utilisiez le mauvais objet et la mauvaise méthode. JSONObject.getJSONObject()s'attend à ce que vous fournissiez une clé pour rechercher un objet, pas une chaîne XML arbitraire.

Vous n'avez pas de clé correspondant à cette chaîne XML, la recherche échoue et vous obtenez l'exception que l'objet (avec la clé spécifiée) n'a pas été trouvé.

Vous essayez d'analyser XML et de sérialiser en tant que JSON.

Je crois que vous pouvez utiliser XML.toJSONObject

1

Mads, qui se contentait de l'affaire! Merci beaucoup, je savais qu'il y avait une solution très simple que je ne voyais pas. Voici la ligne magique qui convertit une chaîne XML en JSON:

String ret = XML.toJSONObject(aStringOfXml).toString();