2016-11-14 5 views
0

Java에서 다음 구조와 유사한 JSON 개체를 작성한 다음 restPost 메서드를 사용하여 요청으로 전달하려고합니다.Java에서 중첩 된 JSON 객체를 생성하고 RestPost 메소드를 사용하여 요청으로 전달 하시겠습니까?

{ 
     "fields": [ 
     { 
      "SESSION_SESSIONNUMID": "500" 
     }, 
     { 
      "SESSION_STATUS": "BP" 
     }, 
     { 
      "SESSION_DESCRIPTION": "Updated" 
     }, 
     { 
      "SESSION_SESSIONDATE": "2016-07-20" 
     }, 
     { 
      "SESSION_CURRENCY_TYPE": "USD" 
     } 
    ] 
    } 

그래서이, 내가 무슨 짓을

public void Insert() { 
    try { 
    String lstrPath = Constants.MIP_BASE_URI + "/api/te/JV/sessions"; 

    System.out.println("Path for creation of session :\n " + lstrPath); 

    //create the JSON object containing the new contacts details. 
    JSONObject array = new JSONObject(); 
    JSONObject object = new JSONObject(); 

    JSONObject A1 = new JSONObject(); 
    A1.put("SESSION_SESSIONNUMID " , "100 "); 

    JSONObject A2 = new JSONObject(); 
    A2.put("SESSION_STATUS " , "BP"); 

    JSONObject A3 = new JSONObject(); 
    A3.put("SESSION_DESCRIPTION " , "CODING"); 

    JSONObject A4 = new JSONObject(); 
    A4.put("SESSION_SESSIONDATE" , "2016-10-20"); 

    JSONObject A5 = new JSONObject(); 
    A5.put("SESSION_CURRENCY_TYPE" , "USD"); 
    object.put("def", array); 

    System.out.println("Passing request :\n" + A1.toString(1)); 

    JSONObject ljsonResponse = RestCalls.RestPost(lstrPath, 
    A1, Constants.REQUESTING_CLASS.MIP); 

    if (ljsonResponse != null) { 
    Constants.MIP_TOKEN = ljsonResponse.getString("token"); 
    } 
    System.out.println("Token from response: " + Constants.MIP_TOKEN); 
     Constants.MIP_AUTH_HEADER = new BasicHeader("Authorization-Token", 
     Constants.MIP_TOKEN); 

    } catch (JSONException ex) { 
     Logger.getLogger(ConnectToMip.class.getName()).log(Level.SEVERE, null,ex); 
    } 
    } 

그리고

이제 문제 위의 코드에서 내가 세션을 생성하는 데 필요한 여러 JSON 개체를 만들 수 있어요,하지만 지금은 드릴 수 없습니다 것입니다 응답에서 여러 JSON 객체를 보내 (전달하는 방법) 알아 내야합니다.

참고 : 아래 코드의 마지막 줄에서 응답으로 1 JSON 개체 (A1)를 보내고 마찬가지로 (A2, A3, A4, A5) 여러 개의 JSON 개체를 보내야합니다. 성공적인 POST.

+0

field가 비슷한 객체를 포함해야하는 배열 인 경우 look odd bit odd를 사용하면 필드와 마찬가지로 여러 객체를 단일 단일 객체에 바인딩 할 수 있습니다. – jos

+0

@jos : 이와 비슷한 것을 만들었습니까?, JSONObject ljsonPost = new JSONObject(); ljsonPost.put ("SESSION_SESSIONNUMID", "515"); ljsonPost.put ("SESSION_STATUS", "BP"); ljsonPost.put ("SESSION_DESCRIPTION", "Updated"); ljsonPost.put ("SESSION_SESSIONDATE", "2016-11-09"); ljsonPost.put ("SESSION_CURRENCY_TYPE", "USD"); – Rick

+0

예 "필드"[ { "SESSION_SESSIONNUMID": "500", "SESSION_STATUS": "BP" "SESSION_DESCRIPTION", "SESSION_SESSIONDATE"를 "업데이트": "2016년 7월 20일" "SESSION_CURRENCY_TYPE": "USD" } – jos

답변

0

우선 나는이 같은 자바에

JSONArray json = new JSONArray(); 
JSONObject Final = new JSONObject(); 

JSONObject A1 = new JSONObject(); 
     A1.put("SESSION_SESSIONNUMID" , "212"); 

     JSONObject A2 = new JSONObject(); 
     A2.put("SESSION_STATUS" , "BP"); 

     JSONObject A3 = new JSONObject(); 
     A3.put("SESSION_DESCRIPTION" , "CODING"); 

     JSONObject A4 = new JSONObject(); 
     A4.put("SESSION_SESSIONDATE" , "2016-10-20"); 

     JSONObject A5 = new JSONObject(); 
     A5.put("SESSION_CURRENCY_TYPE" , "USD"); 

    json.put(A1); 
    json.put(A2); 
    json.put(A3); 
    json.put(A4); 
    json.put(A5); 

     Final.put("fields",json); 

을 내 복잡한 JSON 변환 한 후 내 tostring에 최종 전달합니다.