2015-01-08 1 views
0

JSON прост в использовании, но когда-то писать несколько дочерних элементов дает боль, чтобы писать getJSONObject ("") снова и снова в Java. Есть ли простой способ избежать повторных вызовов и сделать код более чистым?Метод Java для чтения элементов JSON

+1

Разберите JSON в Списки и Карты, а затем войдите в эту структуру. Это очень просто. –

+0

@HotLicks У меня есть сценарий, где мой JSON не всегда будет иметь один и тот же элемент, с индексами списков и карт будет зависимость. Для примера мы имеем ниже сценарий, где в одном сценарии мы будем иметь значение в NewQuote, а другое мы не будем тогда List и Карты позволят быть на втором месте после цитаты, а для большого XML - сложнее управлять. С моим подходом, независимо от местоположения, я перехожу к названиям тегов, и если он существует, он работает else return "". Может быть, не чистый подход, но я тестер и думал поделиться своим опытом. Akshay

+0

Это не имеет никакого смысла. При любой схеме, если есть опущенные элементы, вы должны как-то это понять. –

ответ

-1

После того, как вы попробовали несколько раундов, я подошел под подходом, вы просто передали объект JSON и все элементы с «/» до ниже Java-метода, и он будет читать значение JSON. Примечание. Этот код больше подходит для строкового значения, и вы можете настроить его больше в зависимости от ваших потребностей.

public static String getJSONTagValue(JSONObject partData, String xpath) { 
    String output=""; 
    String[] getPrmString=xpath.split("/"); 
    try { 
     if (partData.has(getPrmString[0])){ 
      for (int i=0;i<getPrmString.length;i++){ 
       if (partData.has(getPrmString[i]) && i!=getPrmString.length-1){ 

         partData=partData.getJSONObject(getPrmString[i]); 

       } else if (partData.has(getPrmString[i])) { 
        output=partData.get(getPrmString[i])+""; 
        if (output.contains("xsi:nil")){ 
         output=""; 
        } else if (output.contains(".0")){ 
         output=output.replace(".0", ""); 
        } 
       }    
      }   
     } 
     if ("".equalsIgnoreCase(output)){ 
      System.out.println("Missing xpath in Response ",xpath); 
     } 
    } catch (JSONException e) { 
     System.out.println("Missing xpath in Response ",xpath) 
     e.printStackTrace(); 
    } 
    return output; 
} 

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

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