it-swarm.com.de

Konvertieren von BufferedReader in JSONObject oder Map

Mein Code sendet eine GET-Anfrage an einen Server.

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    con.setRequestMethod("GET");
    con.setRequestProperty("User-Agent", USER_AGENT); 
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

Ich bekomme ein BufferedReader-Objekt, das druckt,

{  
   "status": "ERROR",    
   "errorCode": "MISSING_PARAMS",    
   "errorMessage": null,    
   "requestId": "20141014181739_11625805172",    
   "downstreamModuleErrorCode": null,    
   "object": [        
     "activity_code",        
     "activity_name",
     "points",
     "frequency",
     "strategy",
     "vsa_app_access_token"    
   ]
}

Ich möchte ein JSONOBject oder eine Map daraus. Ich habe versucht, dies in einen String umzuwandeln und zu manipulieren. Aber so einfach ist das nicht. Bitte helfen.

10

Zuerst machst du es als String. Sie können benutzerdefinierte Bibliotheken dafür verwenden

 String message = org.Apache.commons.io.IOUtils.toString(rd);

oder ein StringBuilder

    StringBuilder sb = new StringBuilder();

    String line;
    br = new BufferedReader(new InputStreamReader(is));
    while ((line = br.readLine()) != null) {
        sb.append(line);
    }

Dann können Sie es analysieren. Da es sich um ein Objekt wegen "{" (Array beginnt und endet mit []) ist, müssen Sie ein JSONObject erstellen.

JSONObject json = new JSONObject(sb.toString());

dann können Sie mit auf Ihre Elemente zugreifen

//{ "status": "ERROR", "errorCode": "MISSING_PARAMS", "errorMessage": null, "requestId": "20141014181739_11625805172", "downstreamModuleErrorCode": null, "object": [ "activity_code", "activity_name", "points", "frequency", "strategy", "vsa_app_access_token" ]}

json.getString("status");

oder das Array mit

JSONArray jsonArray = new JSONArray(json.getString("object"));

oder Sie verwenden die Methode getJSONArray ()

JSONArray jsonArray = json.getJSONArray("object");
21
Emanuel S
InputStream inputStream = connection.getInputStream();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    StringBuilder builder = new StringBuilder();
    String line;
    while ((line = bufferedReader.readLine()) != null) {
        builder.append(line + "\n");
        }

JSONArray jsonArray = new JSONArray(builder.toString());
for (int i = 0; i < jsonArray.length(); i++) {
     JSONObject json = jsonArray.getJSONObject(i);

    if (!json.get("object").equals(null)) {
        JSONArray objectJsonArray = json.getJSONArray("object");
            for (int i = 0; i < objectJsonArray.length(); i++) {
                JSONObject json = objectJsonArray.getJSONObject(i);     
            }       
    }
}

Ich hoffe es hilft.

4
Milad Faridnia

Und was ist damit:

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
JsonReader reader = Json.createReader(in);
JsonObject object = reader.readObject();
String s = object.toString();
1
Jules

Mit dieser lib (org.json) können Sie Strings in Json-Objekte konvertieren: http://www.json.org/Java/

JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
0
Sandro Machado