JAVA Access json String

Estoy trabajando en una aplicación de Android y estoy teniendo problemas con una cadena Json. Quiero acceder a "Naam" en "Docenten" en el siguiente Json:

{  
"Items":[  
  {  
     "Id":2157750,
     "Links":[  
        {  
           "Rel":"Self",
           "Href":"/api/personen/11824/afspraken/2157750"
        },
        {  
           "Rel":"Next",
           "Href":"/api/personen/11824/afspraken/2157661"
        }
     ],
     "Start":"2015-11-16T07:30:00.0000000Z",
     "Einde":"2015-11-16T08:20:00.0000000Z",
     "LesuurVan":1,
     "LesuurTotMet":1,
     "DuurtHeleDag":false,
     "Omschrijving":"du - rec - G3A",
     "Lokatie":"103",
     "Status":7,
     "Type":13,
     "WeergaveType":0,
     "Inhoud":"<html><head></head><body style=\"font-family: 'Arial'; font-size: 12px\"><p style=\"margin: 0px 0px 10px\">lernen für Klassenarbeit,<br/>fertigmachen: 17.4</p></body></html>",
     "InfoType":1,
     "Aantekening":null,
     "Afgerond":false,
     "Vakken":[  
        {  
           "Id":3,
           "Naam":"Duits"
        }
     ],
     "Docenten":[  
        {  
           "Id":706,
           "Naam":"C. Reuten",
           "Docentcode":"rec"
        }
     ],
     "Lokalen":[  
        {  
           "Naam":"103"
        }
     ],
     "Groepen":null,
     "OpdrachtId":0,
     "HeeftBijlagen":false,
     "Bijlagen":null
  },
  ...

Este es mi código pero da un error de puntero nulo:

private void handlejson_agenda(String input){
    if(input != null && input != "[]" && input != "") {
        try {
            JSONObject jsonRootObject = new JSONObject(input);

            //Get the instance of JSONArray that contains JSONObjects
            JSONArray jsonArray = jsonRootObject.optJSONArray("Items");

            //Iterate the jsonArray and print the info of JSONObjects
            if(jsonArray == null){
                //niks
            } else {
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);

                    String name = jsonObject.optString("Omschrijving").toString();
                    String lesuurvan = jsonObject.optString("LesuurVan").toString();
                    String lesuurtot = jsonObject.optString("LesuurTotMet").toString();
                    String lokatie = jsonObject.optString("Lokatie").toString();
                    String status = jsonObject.optString("Status").toString();
                    String datumvan = jsonObject.optString("Start").toString();
                    String datumtot = jsonObject.optString("Einde").toString();
                    String leraar = jsonObject.optJSONArray("Docenten").optString("Naam").toString();
                    String inhoudles = jsonObject.optString("Inhoud").toString();
                    String datumvanconverted = datumvan.substring(0, 10);
                    DateFormat dateFormat = new SimpleDateFormat("HH:mm");
                    ...

Todo funciona, excepto la cadena "Leraar", espero que alguien pueda ayudarme.

-Z3r0byte

Respuesta 1

Esto puede funcionar:

String leraar = jsonObject.optJSONArray("Docenten").getJSONObject(0).optString("Naam").toString();

Entonces, Docentenes un JSONArray al que puede necesitar acceder con index.

Respuesta: 2

He seguido la demostración de JFreeChart (StackedBarChartDemo5) para crear un diagrama que me permita usar GroupedStackedBarRenderer. Básicamente, estoy trazando tiempos aéreos para cada estación (...

Estoy usando un fragmento para comprender cassandra y la sintaxis: import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax ....

Estoy importando datos de cotizaciones de acciones utilizando HibernateTemplate + SpringFramework Format de los datos AAPL, 09-jun-2010 09: 00,251.47,251.47,251.39,251.39,640 AAPL, 09-jun-2010 09: 01,251.4,251.4,251.05,251.26. ..

Soy muy nuevo en acceleo, para la generación de texto (para lenguaje java) estoy usando un archivo ecore y un módulo .mtl. en mi aplicación hay necesidad de anotaciones, por lo que he declarado anotaciones en mi modelo ecore. pero ...