2017-01-03 9 views
1

Мне нужно вытащить значение RecordOne из следующего JSON.Вывод значения ключей в JSON с использованием Java, когда ключ находится под иерархией

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

Я использую Java как язык и объект 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, она должна быть 8

Если я пытаюсь искать значение для ключевых totalNumberOfRecords с тем же кодом, что возвращает правильное значение, которое 86052

Я знаю, что это что-то подоконника но я не могу это поймать.

ответ

1

Когда я запустил ваш код с примером JSON, я закончил с «JSONException: JsonObject [« RecordOne »] не является строкой« ..... которой она не является. Обертка 8 с двойными кавычками: «8» вернула значение, которое вы ожидали. Вы можете получить доступ к этому значению с помощью других методов get: getInt, если хотите.

Этот тестовый пример анализирует как строку, так и 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 я дал пример ответ я получаю после удара запрос GET в Почтальон Использование GetInt также дал мне 1 в качестве выходного сигнала. – SSabharwal

+0

Я добавил быстрый (не лучший) тест JUnit, который показывает, что это работает как с getString, так и с getInt. – nadnavillus

+0

Я также замечаю, что ваш оригинальный JSON не совсем корректен. Он не выполняет валидацию, поскольку отсутствует конечная «}». Это может быть просто неправильное редактирование на примере. – nadnavillus