Sisso
Sisso

Reputation: 229

Issue to parse json

I have to parse this json:

{
    success: true,
    outputScenario: "Default",
    data: {
    output: [
    {
    titolo: "Lunedì 6 novembre",
    sottotitolo: "Pesanti illazioni sulla conoscenza pregressa tra Vittoria e Mattia. Una nuova conoscenza per Paolo. E...",
    date: "06/11/2017"
    },
    {
    titolo: "I vincitori di Maria Express",
    sottotitolo: "Loro sono...",
    date: "06/11/2017"
    },
    {
    titolo: "Mattia e Vittoria",
    sottotitolo: "Mattia viene messo alle strette e...",
    date: "06/11/2017"
    },
    {
    titolo: "Patto illecito? Accordo segreto? Conoscenza pregressa?",
    sottotitolo: "Mattia e Vittoria sono al centro di un vero e proprio irrisolvibile caso...",
    date: "06/11/2017"
    },
    {
    titolo: "Esterna di Mattia e Vittoria - 6 novembre",
    sottotitolo: "En plein air",
    date: "06/11/2017"
    },
    {
    titolo: "Esterna di Paolo e Giorgia - 6 novembre",
    sottotitolo: "Un primo incontro molto schietto",
    date: "06/11/2017"
    },
    {
    titolo: ""Sono fatto così"",
    sottotitolo: "Mattia è molto infastidito da alcuni commenti nei suoi riguardi",
    date: "06/11/2017"
    },
    {
    titolo: ""Occhi da gatta... morta!"",
    sottotitolo: "Tra Ester e Angela non corre buon sangue....",
    date: "06/11/2017"
    },
    {
    titolo: "Esterna di Paolo e Angela - 6 novembre",
    sottotitolo: "Caldarroste e chiarimenti",
    date: "06/11/2017"
    },
    {
    titolo: "Esterna di Paolo e Ester - 6 novembre",
    sottotitolo: "Metti una serata... "romantica"",
    date: "06/11/2017"
    },
    {
    titolo: ""Sei la persona a cui penso di più"",
    sottotitolo: "Nella prossima puntata del Trono Classico...",
    date: "05/11/2017"
    },
    {
    titolo: "Esterna inedita di Paolo e Silvia - 3 novembre",
    sottotitolo: "Un'esterna vintage!",
    date: "03/11/2017"
    }
    ],
    output2: [
    "http://www.video.mediaset.it/bin/415.$plit/640x360_C_2_video_773297_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/515.$plit/640x360_C_2_video_773293_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/605.$plit/640x360_C_2_video_773279_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/917.$plit/640x360_C_2_video_773268_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/142.$plit/640x360_C_2_video_773267_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/479.$plit/640x360_C_2_video_773264_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/929.$plit/640x360_C_2_video_773266_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/196.$plit/640x360_C_2_video_773261_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/29.$plit/640x360_C_2_video_773262_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/4.$plit/640x360_C_2_video_773258_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/917.$plit/640x360_C_2_video_772171_videoThumbnail.jpg",
    "http://www.video.mediaset.it/bin/73.$plit/640x360_C_2_video_772128_videoThumbnail.jpg",
    "http://cdn.wittytv.it/wp-content/themes/wittytv/images/witty.png"
    ]
    },
    stateToken: "eyJqYXIiOnsidmVyc2lvbiI6InRvdWdoLWNvb2tpZUAyLjMuMiIsInN0b3JlVHlwZSI6Ik1lbW9yeUNvb2tpZVN0b3JlIiwicmVqZWN0UHVibGljU3VmZml4ZXMiOnRydWUsImNvb2tpZXMiOltdfSwidmVyc2lvbiI6MX0=",
    cookies: [ ]
}

The first array output I am able to parse, but the second array output2 I am not able to parse.

I show you my code:

@Override
protected Void doInBackground(Void... arg0) {
    HttpHandler sh = new HttpHandler();

    // Making a request to url and getting response
    String jsonStr = sh.makeServiceCall(url);

    Log.e(TAG, "Response from url: " + jsonStr);

    if (jsonStr != null) {
        try {
            JSONObject jsonObj = null;
            try {
                jsonObj = new JSONObject(jsonStr);
            } catch (JSONException e) {
                e.printStackTrace();
            }

            // Getting JSON Array node
            JSONArray contacts = jsonObj.getJSONObject("data").getJSONArray("output");

            // looping through All Contacts
            for (int i = 0; i < contacts.length(); i++) {
                JSONObject c = contacts.getJSONObject(i);

                Video video=new Video();
                String titolo = c.getString("titolo");
                String sottotitolo = c.getString("sottotitolo");
                String data = c.getString("date");
                video.setTitolo(titolo);
                video.setSottotitolo(sottotitolo);
                video.setData(data);



                videoList.add(video);
            }

            JSONArray itemArray = jsonObj.getJSONObject("data").getJSONArray("output2");

            for(int i=0;i<itemArray.length();i++)

            {

                String c = itemArray.getString(i);

                Log.i("Value is:::",""+c);

            }


        } catch (final JSONException e) {
            Log.e(TAG, "Json parsing error: " + e.getMessage());
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(),
                            "Json parsing error: " + e.getMessage(),
                            Toast.LENGTH_LONG)
                            .show();
                }
            });

        }
    }    else {
        Log.e(TAG, "Couldn't get json from server.");
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(),
                        "Couldn't get json from server. Check LogCat for possible errors!",
                        Toast.LENGTH_LONG)
                        .show();
            }
        });

    }

    return null;
}

This for loop does not run:

for(int i=0;i<itemArray.length();i++)       
{
    String c = itemArray.getString(i);
    Log.i("Value is:::",""+c);
}

I get this from logcat:

Json parsing error: No value for output2

How response from server I get only the first array and not the second... why?

Upvotes: 1

Views: 93

Answers (2)

Ravi
Ravi

Reputation: 930

Try this formatted Json String

{
   "success": true,
   "outputScenario": "Default",
   "data": {
      "output": [
         {
            "titolo": "Lunedì 6 novembre",
            "sottotitolo": "Pesanti illazioni sulla conoscenza pregressa tra Vittoria e Mattia. Una nuova conoscenza per Paolo. E...",
            "date": "06/11/2017"
         },
         {
            "titolo": "I vincitori di Maria Express",
            "sottotitolo": "Loro sono...",
            "date": "06/11/2017"
         }
      ],
      "output2": [
         "http://www.video.mediaset.it/bin/415.$plit/640x360_C_2_video_773297_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/515.$plit/640x360_C_2_video_773293_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/605.$plit/640x360_C_2_video_773279_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/917.$plit/640x360_C_2_video_773268_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/142.$plit/640x360_C_2_video_773267_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/479.$plit/640x360_C_2_video_773264_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/929.$plit/640x360_C_2_video_773266_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/196.$plit/640x360_C_2_video_773261_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/29.$plit/640x360_C_2_video_773262_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/4.$plit/640x360_C_2_video_773258_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/917.$plit/640x360_C_2_video_772171_videoThumbnail.jpg",
         "http://www.video.mediaset.it/bin/73.$plit/640x360_C_2_video_772128_videoThumbnail.jpg",
         "http://cdn.wittytv.it/wp-content/themes/wittytv/images/witty.png"
      ]
   },
   "stateToken": "eyJqYXIiOnsidmVyc2lvbiI6InRvdWdoLWNvb2tpZUAyLjMuMiIsInN0b3JlVHlwZSI6Ik1lbW9yeUNvb2tpZVN0b3JlIiwicmVqZWN0UHVibGljU3VmZml4ZXMiOnRydWUsImNvb2tpZXMiOltdfSwidmVyc2lvbiI6MX0=",
   "cookies": []
}

Upvotes: 1

Ravi
Ravi

Reputation: 930

"data" object has 2 arrays - Output , output2. You got the first one right by pulling "output" from data . Do the same way for the second one.

JSONArray contacts = jsonObj.getJSONObject("data").getJSONArray("output");

Change this line

JSONArray itemArray = jsonObj.getJSONArray("output2");

to

 JSONArray output2 = jsonObj.getJSONObject("data").getJSONArray("output2");

Upvotes: 0

Related Questions