2016-04-11 17 views
0

Ich erhalte JSON-Daten von einer URL und möchte die Daten auf meiner Website anzeigen. Ich zeige erfolgreich alle JSON-Daten außer JSON-Hierarchie (JSON-Objekt) -Daten. Ich bin in der Lage, auf JSONArray und error Daten zuzugreifen. Aber ich kann nicht auf die Daten der Hierarchie (JSON-Objekt) updated zugreifen.Zugriff auf verschachtelte Elemente von JSON-Daten in Java?

Ich möchte auf updated.time zugreifen.

import java.io.IOException; 
import java.net.URL; 
import org.apache.commons.io.IOUtils; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.JSONValue; 
import org.json.simple.parser.ParseException; 

public class ParseJson1 { 

public static void main(String[] args) { 
    String url = "http://freemusicarchive.org/api/get/genres.json?api_key=60BLHNQCAOUFPIBZ&limit=2"; 
    /* 
    { 
"person": [ 
    { 
     "name": "John", 
     "city": "Mumbai" 
    }, 
    { 
     "name": "Rahul", 
     "city": "Delhi" 
    }, 
    { 
     "name": "Sanjana", 
     "city": "Amritsar" 
    }, 
    { 
     "name": "Anjali", 
     "city": "Hyderabad" 
    }, 
    { 
     "name": "Mukund", 
     "city": "Bangalore" 
    }, 
    { 
     "name": "Raunak", 
     "city": "Patna" 
    } 
], 
"updated": { 
    "time": "14:17:48", 
    "date": "2016-04-10" 
}, 
"error": "2353" 
} 

*/ 

    try { 
     String genreJson = IOUtils.toString(new URL(url)); 
     JSONObject genreJsonObject = (JSONObject) JSONValue.parseWithException(genreJson); 
     // get the error 
     System.out.println(genreJsonObject.get("error")); 

     //Get Array Values 
     JSONArray genreArray = (JSONArray) genreJsonObject.get("person"); 
     // get the first genre 
     JSONObject firstGenre = (JSONObject) genreArray.get(0); 
     System.out.println(firstGenre.get("name")); 
     // get the Second 
     JSONObject firstGenre = (JSONObject) genreArray.get(1); 
     System.out.println(firstGenre.get("name")); 
     // get the third 
     JSONObject firstGenre = (JSONObject) genreArray.get(2); 
     System.out.println(firstGenre.get("city")); 


    } catch (IOException | ParseException e) { 
     e.printStackTrace(); 
    } 
} 
} 
+0

Ich bin ein wenig verwirrt hier, möchten Sie Ihren Zugriff auf "aktualisiert", um das Datetime-Objekt, das aktualisiert enthält zurückgibt? –

+1

Welchen Fehler erhalten Sie, fügen Sie bitte eine 'StackTrace' Nachricht hinzu. um genau zu sein. Es kann einige 'ClassNotFound Exception' geben, wie ich in meiner Erfahrung weiß. @ Shubham –

+0

Obwohl ich eine Lösung für Ihr Problem hinzugefügt habe. Sie können dies überprüfen .. @ Shubham –

Antwort

0

Dieses json Ergebnis erscheint, was Sie von Ihrem api URL bekam. Recht ??

{ 
    "person":[ 
     { 
     "name":"John", 
     "city":"Mumbai" 
     }, 
     { 
     "name":"Rahul", 
     "city":"Delhi" 
     }, 
     { 
     "name":"Sanjana", 
     "city":"Amritsar" 
     }, 
     { 
     "name":"Anjali", 
     "city":"Hyderabad" 
     }, 
     { 
     "name":"Mukund", 
     "city":"Bangalore" 
     }, 
     { 
     "name":"Raunak", 
     "city":"Patna" 
     } 
    ], 
    "updated":{ 
     "time":"14:17:48", 
     "date":"2016-04-10" 
    }, 
    "error":"2353" 
} 

Jetzt ist hier ein-Code, wie Sie Ihren json Objekt iterieren oder zu analysieren. Ich nehme an, dass das obige Ergebnis json in einer String Variablen String genreJson gemäß Ihrem Code gespeichert ist.

Hier schrieb ich eine method, um Ihr Problem zu lösen. Sie können einen Hinweis darauf nehmen und Ihren eigenen Code ausprobieren.

public void testYourJSON(String genreJson){ 

    JSONParser parser=new JSONParser(); //parser used to parse String to Correct Json format. 

    JSONObject obj_ComplexData = (JSONObject) parser.parse(genreJson); // Now Your String Converted to a JSONObject Type. 

    //person tag Array Data is fetched and Stored into a JSONArray Object. 
    JSONArray obj_arrayPersonData = (JSONArray) parser.parse(obj_ComplexData.get("person").toString()); 

    for (Object person : obj_arrayPersonData) { //Iterate through all Person Array. 
      System.out.println(person.get("name")); 
      System.out.println(person.get("city")); 
    } 

    //Select "updated" Tag Json Data. 
    JSONObject obj_Updated = (JSONObject) parser.parse(obj_ComplexData.get("updated").toString()); 

    System.out.println(obj_Updated.get("time")); //display time tag. 
    System.out.println(obj_Updated.get("date")); //display date tag. 


    System.out.println(obj_Updated.get("error")); //display Your Error. 

} 
0

diese

public static String[] getInfo(String url) 
{ 
    String result=//I am assuming your json response is in result 
    String[] titles=null; 
    try { 
     JSONObject jsonObject=new JSONObject(result); 
     JSONObject temp=null; 
     JSONArray jsonArray=jsonObject.getJSONArray("person"); 
     int length=jsonArray.length(); 
     person=new String[length]; 
     for (int i=0;i<length;i++){ 
      temp= (JSONObject) jsonArray.get(i); 
      titles[i]=temp.getString("name")+temp.getString("city"); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return titles; 
} 

Versuchen Dies funktioniert gut, wenn Sie irgendein Problem Schreib in den Kommentaren stellen.

Happy coding!!