简体   繁体   中英

Parse JSON array of objects from url Java

How do I parse an array of JSON objects from an external URL with the Java application? Here is an example of code, that I am using:

URL connectionUrl = new URL(/*some url*/);
connection = (HttpURLConnection) connectionUrl.openConnection();

String postData = "/*some post data*/";

connection.setDoOutput(true);
connection.setFixedLengthStreamingMode(postData.length());

OutputStream outputStream = null;
outputStream = connection.getOutputStream();
outputStream.write(postData.getBytes());

if(connection.getResponseCode() == 200) {
  InputStream inputStream = connection.getInputStream();
  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

  String magicString = "", magicLine;

  while((magicLine = bufferedReader.readLine()) != null) {
    JSONArray jsonArr = new JSONArray(magicLine);

    for(int i = 0; i < jsonArr.length(); i++) {
       JSONObject currentEntity = jsonArr.getJSONObject(i);

 
  }
}
return magicString;

And this one is the array of JSON objects, that gets echo'd out on some external URL:

[{"ID":"1","name":"test name","phone":"+37120000000","email":"test@cream.camp","date":"2020-12-17","time":"18:50:00","people_num":"4","active":"0"},{"ID":"2","name":"test name","phone":"+37120000000","email":"test@cream.camp","date":"2020-12-17","time":"18:50:00","people_num":"4","active":"1"}]

Unfortunately, the application fails with the following error:

org.json.JSONException: Value Authorization of type java.lang.String cannot be converted to JSONArray

You can create a POJO to hold JSON response. Use third-party jar such as Jackson. Something like the following:

ObjectMapper mapper = new ObjectMapper();
try {
    YourPOJO obj = mapper.readValue(new URL("http://jsonplaceholder.typicode.com/posts/7"), YourPOJO.class);
    System.out.println(usrPost);
} catch (Exception e) {
    e.printStackTrace();
}

Refer to https://www.java2novice.com/java-json/jackson/jackson-client-read-from-api-url/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM