2016-05-27 4 views
0

Я новичок в REST API и обрабатываю JSON в нашем сценарии автоматизации. У меня есть API, чей ответ JSONArray т.е.,Как получить объект JSON из массива Json в REST API

[{"ProjectID":15,"ProjectName":" Securities"},{"ProjectID":16,"ProjectName":"PAS "}] 

While автоматизации, для проверки мне нужно принести réponse. Я попытался ниже один, но не получает ожидаемый результат

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.Scanner; 
import org.json.*; 

public class ProjectNameVerfication { 

public static void main(String[] args) throws JSONException 
{ 

    try 
    { 
    URL url = new URL("http://17*.**.**.**:3000/api/******"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setRequestMethod("GET"); 
    conn.setRequestProperty("Accept", "application/json"); 

    if (conn.getResponseCode() != 200) 
    { 
     throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); 
    } 

    Scanner scan = new Scanner(url.openStream()); 
    String str = new String(); 
    while (scan.hasNext()) 
     str += scan.nextLine(); 
    scan.close(); 

    System.out.println("str : " + str); 

    JSONObject obj = new JSONObject(str.substring(str.indexOf('{'))); 
    System.out.println("obj : " +obj); 
    int ProjectID = obj.optInt("ProjectID"); 
    String ProjectName = obj.getString("ProjectName"); 

    System.out.println("ProjectID: " +ProjectID); 
    System.out.println("ProjectName: " +ProjectName); 

    JSONArray arr = obj.getJSONArray("ProjectID"); 
    for (int i = 0; i < arr.length(); i++) 
    { 
     String post_id =arr.getJSONObject(i).getString("ProjectName"); 
    } 

    conn.disconnect(); 
    } 
    catch (MalformedURLException e) { e.printStackTrace();} 
    catch (IOException e) { e.printStackTrace(); } 

} 
} 

Фактический выход ниже:

str : [{"ProjectID":15,"ProjectName":" Securities"},{"ProjectID":16,"ProjectName":"PAS "}] 

obj : {"ProjectName":" securities""ProjectID":15} 

ProjectID: 15 
ProjectName: Securities 

Exception in thread "main" org.json.JSONException: JSONObject["ProjectID"] is not a JSONArray. 
    at org.json.JSONObject.getJSONArray(JSONObject.java:539) 
    at MyTest.ProjectNameVerfication.main(ProjectNameVerfication.java:60) 
+0

Просьба избежать изменения ПРИНЯТОГО ответа. – Enzokie

ответ

-1

Если вы используете простой JSON Вы должны разобрать следующим образом.

String str = "[{\" ProjectID \ ": 15, \" ProjectName \ ": \" Ценные бумаги \ "}, {\" ProjectID \ ": 16, \" ProjectName \ ": \" PAS \ "}]";

 JSONParser json=new JSONParser(); 
     try { 
     JSONArray arr=(JSONArray)json.parse(str);   
     for (int i = 0; i < arr.size(); i++) { 
      JSONObject obj=(JSONObject)arr.get(i); 
      System.out.println("ProjectID: "+obj.get("ProjectID")); 
      System.out.println("ProjectName: "+obj.get("ProjectName")); 
     } 
     } catch (ParseException e) {     
      e.printStackTrace(); 
     } 
0

Вы хотите, чтобы получить все ProjectName, верно?

посмотреть на ваши данные ответа:

[{"ProjectID":15,"ProjectName":" Securities"},{"ProjectID":16,"ProjectName":"PAS "}] 

это уже JSONArray строка, вы можете разобрать его как JSONArray и получить ProjectName в foreach

JSONArray jsonArray = new JSONArray("your str"); 
    for (Object object : jsonArray) { 
     JSONObject jsonObject = (JSONObject)object; 
     System.out.println(jsonObject.toString()); 
    } 
+0

Спасибо за быстрый ответ. Как я могу разобрать его как JSONArray? –

0

Ваш ответ является массив, так что вам нужно JSONArray вместо JSONObject.

try { 

     JSONArray e = new JSONArray(str); 
     int l = e.length(); 

     for (int x = 0; x < l; x++) { 
      JSONObject object1 = e.getJSONObject(x); 
      String projectID = object1.getString("ProjectID"); 
      String projectName = object1.getString("ProjectName"); 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

Его рабочие благодарности, а также я пробовал этот JSONArray jsonarray = new JSONArray (str); for (int i = 0; i

+0

Я рад, что это помогает :) – Enzokie

Смежные вопросы