2017-01-03 23 views
1

다음 JSON에서 RecordOne의 값을 추출해야합니다.키가 계층 구조 아래에있을 때 Java를 사용하여 JSON의 키 값을 꺼내십시오.

{ 
    "errors": [], 
    "data": { 
    "paging": { 
     "RecordOne": 8, 
     "RecordTwo": 9, 
     "recordThree": 2, 
     "totalNumberOfRecords": 86052 
    }, 
    "products": [ 
     { 
     "testabstract": "test data", 
     "authors": "Frank Jr.", 
     "invertedauthors": "Frank VJr.", 
     "formatCode": "KND" 
     } 
    ] 
    } 
} 

내가 같은를 달성하기 위해 언어와 JSON 객체로 자바를 사용하여 다음과 같은거야 내가 사용하고 무엇을 :

protected String getTokenValueUnderHeirarchy(String responseString){ 
     JSONObject json = new JSONObject(responseString); 
     String val= json.getJSONObject("data").getJSONObject("paging").getString("RecordOne"); 
     System.out.println("val::"+val); 
return val; 
    } 

내가 발 = 1의 값을 받고 있어요, 그것은해야 내가 같은 코드 키 totalNumberOfRecords 가치를 추구하려고하면 8

는 그것이 문턱 뭔가 내가 아는 86052

입니다 올바른 값을 반환 y 그러나 나는 그것을 잡지 못한다.

답변

1

JSON 예제로 코드를 실행하면 "JSONException : JsonObject ["RecordOne "]이 (가) 문자열이 아닙니다."..... 그렇지 않습니다. 8을 큰 따옴표로 감싸는 경우 : "8"이 예상 한 값을 반환했습니다. 원할 경우 getInt 메소드를 사용하여이 값에 액세스 할 수 있습니다.

이 테스트 케이스는 String과 int를 모두 구문 분석합니다. 나는 당신의 모범에서 이것을 끌어 냈습니다. 그것은 당신을 위해 실행됩니까?

package org.nadnavillus.test; 

import org.json.JSONObject; 
import org.junit.Test; 

public class TestCase { 

    protected String getTokenValueUnderHeirarchy(String responseString) throws Exception { 
     JSONObject json = new JSONObject(responseString); 
     String val= json.getJSONObject("data").getJSONObject("paging").getString("RecordOne"); 
     System.out.println("val::"+val); 
     return val; 
    } 

    protected String getTokenValueUnderHeirarchyInt(String responseString) throws Exception { 
     JSONObject json = new JSONObject(responseString); 
     int val= json.getJSONObject("data").getJSONObject("paging").getInt("RecordTwo"); 
     System.out.println("val::"+val); 
     return String.valueOf(val); 
    } 

    @Test 
    public void testJson() throws Exception { 
     String input = "{\"errors\": [], \"data\": {\"paging\": {\"RecordOne\": \"8\", \"RecordTwo\": 9, \"recordThree\": 2, \"totalNumberOfRecords\": 86052}}}"; 
     String test = this.getTokenValueUnderHeirarchy(input); 
     System.out.println(test); 
     test = this.getTokenValueUnderHeirarchyInt(input); 
     System.out.println(test); 
    } 
} 
+0

의 getInt 내가 예를 제공 한 JSON도 출력으로 나에게 일을 준 내가의 getInt를 사용 우체부 에 GET 요청을 타격 한 후지고있어 반응이다, 너무 도움이되지 않았다. – SSabharwal

+0

getString과 getInt를 사용하여 실행중인 JUnit 테스트를 추가했습니다. – nadnavillus

+0

원래 JSON이 정확하지 않다는 것을 알았습니다. 끝에 "}"이 없기 때문에 유효성 검사에 실패합니다. 그것은 예제에 나쁜 편집 일 수 있습니다. – nadnavillus