web-dev-qa-db-ja.com

BufferedReaderをJSONObjectまたはMapに変換する

私のコードはGETリクエストをサーバーに送信し、

    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()));

印刷するBufferedReaderオブジェクトを取得し、

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

これからJSONOBjectまたはMapを取得します。これを文字列に変換して操作してみました。しかし、それは簡単なことではありません。助けてください。

11

最初にそれを文字列として行います。あなたはそのようなカスタムライブラリを使用することができます

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

またはStringBuilder

    StringBuilder sb = new StringBuilder();

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

その後、それを解析できます。 "{"(配列は[]で始まり、[]で終わる配列)のためにオブジェクトなので、JSONObjectを作成する必要があります。

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

それからあなたはあなたの要素にアクセスできます

//{ "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");

または配列

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

または、メソッドgetJSONArray()を使用します

JSONArray jsonArray = json.getJSONArray("object");
23
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);     
            }       
    }
}

それが役に立てば幸い。

4
Milad Faridnia

そしてこれはどうですか:

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

このlib(org.json)を使用して、文字列をjsonオブジェクトに変換できます: http://www.json.org/Java/

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