2016-04-08 13 views
1

Ich versuche, meine Xml-Zeichenfolge in ein JSON-Objekt zu konvertieren. Ich verwende das org.Json-Paket. Ich habe Informationen vom Wolfram Alpha Server angefordert. Der Server gibt xml zurück und ich möchte das org.json-Paket verwenden, um es nach json zu konvertieren. Die Methode, die ich verwenden möchte, ist statisch, was innerhalb der XML-Klasse liegt. Ich habe eine JSONObject-Methode erstellt, in der ich dachte, dass ich konvertieren würde, aber ich bekomme immer eine Fehlermeldung.Ausnahme im Thread "Haupt" java.lang.NullPointerException bei java.io.StringReader. <init> (Unbekannte Quelle)

Hier ist mein Code von meiner Hauptmethode. Hier

import java.net.*; 
import java.io.*; 
import org.json.*; 
import java.net.URLConnection; 
import java.util.Scanner; 
import java.net.URL; 
import javax.swing.*; 


public class Test { 

public static void main(String[] args)throws IOException, JSONException{//Beginning of class 
    // TODO Auto-generated method stub 
    String appID = "YWT4UP-Y9W7AREAHJ"; 
    String search = "bird"; 

    URL wolframData = new URL("http://api.wolframalpha.com/v2/query?input="+search+"&appid="+appID); 

    URLConnection connection = wolframData.openConnection(); 

    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
    //reads in the data 
    String xmlDoc; 

    while((xmlDoc = in.readLine()) != null) //converts buffer reader to string 
    System.out.println(xmlDoc); 
    in.close(); 

    JSONObject jsonDoc = (JSONObject) XML.toJSONObject(xmlDoc); 



}//End of method 

}//End of class 

ist die Fehlermeldung, die angezeigt wird, wenn es den Code erreichen, die die XML zu JSON konvertiert:

Exception in thread "main" java.lang.NullPointerException 
at java.io.StringReader.<init>(Unknown Source) 
at org.json.JSONTokener.<init>(JSONTokener.java:85) 
at org.json.XMLTokener.<init>(XMLTokener.java:55) 
at org.json.XML.toJSONObject(XML.java:329) 
at Test.main(Test.java:31) 
+3

'' ' while ((xmlDoc = in.readLine())! = null) '' 'Eh ... Also' '' xmlDoc''' wird am Ende der Schleife immer '' 'null''' sein. –

+0

@jornVernee Wie wirkt sich das auf das Programm aus? Kannst du erklären, was du genauer meinst? Hast du eine Lösung? – Ellipse

+0

Siehe: [Was ist eine Nullzeiger-Ausnahme und wie behebe ich sie?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do- i-fix-it) –

Antwort

1

Ich denke, die Antwort sein sollte,

import java.net.*; 
    import java.io.*; 
    import org.json.*; 
    import java.net.URLConnection; 
    import java.util.Scanner; 
    import java.net.URL; 
    import javax.swing.*; 


    public class Test { 

    public static void main(String[] args)throws IOException, JSONException{//Beginning of class 
     // TODO Auto-generated method stub 
     String appID = "YWT4UP-Y9W7AREAHJ"; 
     String search = "bird"; 

     URL wolframData = new URL("http://api.wolframalpha.com/v2/query?input="+search+"&appid="+appID); 

     URLConnection connection = wolframData.openConnection(); 

     BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     //reads in the data 
     String xmlDoc; 
    StringBuilder sb = new StringBuilder(); 
     while((xmlDoc = in.readLine()) != null) { //converts buffer reader to string 
     System.out.println(xmlDoc); 
    sb.append(xmlDoc); 
    } 
     in.close(); 

     JSONObject jsonDoc = (JSONObject) XML.toJSONObject(sb.toString()); 



    }//End of method 

    }//End of class 
+0

Warum muss ich die String Builder-Klasse verwenden? – Ellipse

+0

Ich benutze stringBuilder, um die gleichen Dinge als String Concatination zu tun. Aber es ist veränderbar, während die Kette unveränderlich ist. –

+0

danke für Ihre Hilfe – Ellipse