[英]Converting BufferedReader to JSONObject or 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。 我尝试将其转换为 String 并对其进行操作。 但这并不容易。 请帮忙。
首先将其作为字符串。 您可以使用自定义库,例如
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");
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);
}
}
}
希望能帮助到你。
这又如何呢:
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
JsonReader reader = Json.createReader(in);
JsonObject object = reader.readObject();
String s = object.toString();
使用这个库(org.json)你可以将字符串转换为 json 对象: http : //www.json.org/java/
JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");
在org.json
更新版本中,您可以执行以下操作:
JSONTokener tokener = new JSONTokener(bufferedReader);
JSONObject json = new JSONObject(tokener);
作为快速证明,这适用于org.json:json:20190722
:
byte[] b = "{ \"active\" : true }".getBytes(StandardCharsets.UTF_8);
InputStream is = new ByteArrayInputStream(b);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
JSONTokener tokener = new JSONTokener(bufferedReader);
JSONObject json = new JSONObject(tokener);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.