2017-01-05 3 views
0

Я пытаюсь принести TestID от имени элемента, имеющий Item2 из следующих JSON файла:Как получить относительные значения из файла JSON?

{ 
    "errors": [], 
    "data": { 
    "collections": [ 
     { 
     "testId": 250, 
     "name": "Item1", 
     "itemCount": 3 
     }, 

     { 
     "testId": 350, 
     "name": "Item2", 
     "itemCount": 4 
     }, 
     { 
     "testId": 411, 
     "name": "Item3", 
     "itemCount": 1 
     }, 
     { 
     "testId": 450, 
     "name": "null", 
     "itemCount": 0 
     } 
    ] 
    } 
} 

Это JSON является ответом запроса GET я побежал на почтальона.

Я могу получить значение любой клавиши в этом JSON, но я не могу добавить относительные условия, такие как выборка testID элемента с именем Item6.

Я использую список массивов для получения значений testID для всех элементов, который отлично работает для меня. Могу ли я внести какие-либо изменения в следующее, чтобы достичь того, чего хочу?

protected String getTokenValueUnderHierarchy(String responseString) throws ClientProtocolException, IOException { 
     String responseRecordsTitle = null; 
     List<String> list = Arrays.asList(responseString.split("testId")); 
     System.out.println("list.size()::"+list.size()); 
     for (int i=0;i<list.size();i++){   
      System.out.println("List Element:"+list.get(i)); 
      responseRecordsTitle = getTokenValue(responseString,"testId"); 
     } 
     return responseRecordsTitle; 

    } 

PS: getTokenValue (String, String) является функцией, которую я создал, чтобы принести значение и она отлично работает.

+0

Есть ли конкретная причина, чтобы написать собственную логику? почему вы не можете использовать существующие api, как показано на этом URL-странице https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/ Всегда лучше конвертировать json в объект для удобства обслуживание (поможет в будущем) – RamPrakash

+0

Да! Мне нужна эта логика, потому что ID, который я буду использовать, будет использоваться как параметр URL для другого запроса на обслуживание. – SSabharwal

ответ

0

Пользовательский JSON-анализатор доступен для java. Вот один из них How to parse JSON in Java. Когда вы извлекаете значения из массива JSON, вы можете выполнить простое сравнение строк, чтобы проверить условия.! Надеюсь, это поможет.

0

У меня есть это! Спасибо за подсказку @Castor. Следующие работали для меня:

responseJson - это файл JSON, который я получаю как ответ от запроса GET.

protected int getIdFromArrayOfCollectionItems(String responseJson) throws JSONException{ 
    int collectionId=0; 
    JSONObject root = new JSONObject(responseJson).getJSONObject("data"); 
    JSONArray collectionArray = root.getJSONArray("collections"); 
    for(int i =0 ;i<collectionArray.length();i++){ 
     JSONObject collectionObject = collectionArray.getJSONObject(i); 
     String name = collectionObject.getString("name"); 
     if(name.equalsIgnoreCase("Item2")){ 
      collectionId = collectionObject.getInt("collectionId"); 
      System.out.println("collection ID::"+collectionId); 
     } 
    } 
    return collectionId; 

} 

Конечно я передам имя предмета в качестве аргумента для более динамичного поведения, но это работает :)

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

  • Нет связанных вопросов^_^