org.json.JSONException: Value <JSONarray-here> of type org.json.JSONArray cannot be converted to JSONObject

huangapple go评论67阅读模式
英文:

org.json.JSONException: Value <JSONarray-here> of type org.json.JSONArray cannot be converted to JSONObject

问题

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
             try {
                JSONArray jsonArray = response.getJSONArray("articles");
                Log.d("1", "onResponse: Success before loop");
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject hit = jsonArray.getJSONObject(i);
                    //JSONArray
                    Log.d("1", "onResponse: Inside the loop");

                    String title = hit.getString("title");
                    String imageUrl = hit.getString("imageURL");
                    String article = hit.getString("content");
                    String author = hit.getString("author");
                    String date = hit.getString("time");
                    mExampleList.add(new ExampleItem(imageUrl, title, article, author, date));
                }
                mExampleAdapter = new ExampleAdapter(MainActivity.this, mExampleList);
                mRecyclerView.setAdapter(mExampleAdapter);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("1", "onErrorResponse: Error response");
            error.printStackTrace();
        }
    });
mRequestQueue.add(request);

JSON array received:

[
    {
        "language": "Hindi",
        "title": "\"स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\"",
        "location": "Dhanbad",
        "link": "mysite2.com",
        "international": false,
        "time": "20/5/2020",
        "imageURL": "https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg",
        "content": "\"स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\"  नई दिल्ली: भारत सरकार ने स्वदेशी हथियारों ( Indigenous Developed weapons) और सैन्य साजो सामान को निर्यात करने की रणनीति बनाई है, जिसमें भारत सरकार अपने राजनयिक संबंधों का भी इस्तेमाल करेगी, रक्षा मंत्रालय से जुड़े सूत्रों ने यह जानकारी दी,रक्षा उत्पादन विभाग के सचिव राजकुमार ने एक वेबिनार में कहा कि भारत सरकार मित्र देशों के राजनयिकों से संपर्क स्थापित कर यह जानने की रणनीति बना रही है कि उन्हें किस तरह के हथियारों और रक्षा सौदों की जरूरत है. ताकि भारतीय उत्पादक उनके हिसाब से रक्षा सामग्री का निर्माण कर सकें। कुमार ने कहा कि भारत सरकार अपने रक्षा प्रतिनिधियों, दूतावासों और राजनयिक चैनलों का इस्तेमाल मेक इन इंडिया के तहत बनाए जाने वाले हथियारों के निर्यात को बढ़ाने में करेगी।",
        "author": "Sova"
    }
]
英文:

I am new to working with APIs and JSON files. I've put together this code by watching some tutorials but am stuck at this point. here is the code:

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener&lt;JSONObject&gt;() {
        @Override
        public void onResponse(JSONObject response) {
             try {
                JSONArray jsonArray = response.getJSONArray(&quot;articles&quot;);
                Log.d(&quot;1&quot;, &quot;onResponse: Success before loop&quot;);
                for (int i = 0; i &lt; jsonArray.length(); i++) {
                    JSONObject hit = jsonArray.getJSONObject(i);
                    //JSONArray
                    Log.d(&quot;1&quot;, &quot;onResponse: Inside the loop&quot;);

                    String title = hit.getString(&quot;title&quot;);
                    String imageUrl = hit.getString(&quot;imageURL&quot;);
                    String article = hit.getString(&quot;content&quot;);
                    String author = hit.getString(&quot;author&quot;);
                    String date = hit.getString(&quot;time&quot;);
                    mExampleList.add(new ExampleItem(imageUrl, title, article, author, date));
                }
                mExampleAdapter = new ExampleAdapter(MainActivity.this, mExampleList);
                mRecyclerView.setAdapter(mExampleAdapter);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(&quot;1&quot;, &quot;onErrorResponse: Error response&quot;);
            error.printStackTrace();
        }
    });
mRequestQueue.add(request);

Here is the JSON array that I am receiving:

[
    {
        &quot;language&quot;: &quot;Hindi&quot;,
        &quot;title&quot;: &quot;\&quot;स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\&quot;&quot;,
        &quot;location&quot;: &quot;Dhanbad&quot;,
        &quot;link&quot;: &quot;mysite2.com&quot;,
        &quot;international&quot;: false,
        &quot;time&quot;: &quot;20\/5\/2020&quot;,
        &quot;imageURL&quot;: &quot;https:\/\/cdn.pixabay.com\/user\/2014\/11\/30\/13-45-12-52_250x250.jpg&quot;,
        &quot;content&quot;: &quot;\&quot;स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\&quot;  नई दिल्ली: भारत सरकार ने स्वदेशी हथियारों ( Indigenous Developed weapons) और सैन्य साजो सामान को निर्यात करने की रणनीति बनाई है, जिसमें भारत सरकार अपने राजनयिक संबंधों का भी इस्तेमाल करेगी, रक्षा मंत्रालय से जुड़े सूत्रों ने यह जानकारी दी,रक्षा उत्पादन विभाग के सचिव राजकुमार ने एक वेबिनार में कहा कि भारत सरकार मित्र देशों के राजनयिकों से संपर्क स्थापित कर यह जानने की रणनीति बना रही है कि उन्हें किस तरह के हथियारों और रक्षा सौदों की जरूरत है. ताकि भारतीय उत्पादक उनके हिसाब से रक्षा सामग्री का निर्माण कर सकें। कुमार ने कहा कि भारत सरकार अपने रक्षा प्रतिनिधियों, दूतावासों और राजनयिक चैनलों का इस्तेमाल मेक इन इंडिया के तहत बनाए जाने वाले हथियारों के निर्यात को बढ़ाने में करेगी।&quot;,
        &quot;author&quot;: &quot;Sova&quot;
    }
]

I am unable to figure out the issue here. I know that there is a very minor issue here. I hope you can help me out here.

Here is the full JSON:

{
    &quot;articles&quot;: {
        &quot;PHcgUZAwEHRlVZKXtxph&quot;: {
            &quot;international&quot;: true,
            &quot;imageURL&quot;: &quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
            &quot;location&quot;: &quot;all&quot;,
            &quot;link&quot;: &quot;mysite2.com&quot;,
            &quot;time&quot;: &quot;23/4/58&quot;,
            &quot;language&quot;: &quot;English&quot;,
            &quot;author&quot;: &quot;Rze&quot;,
            &quot;content&quot;: &quot;Last Article I Promise&quot;,
            &quot;title&quot;: &quot;Lorem Ipsum v3&quot;
       },
       &quot;PeIutXkKrL4Fftku6mKf&quot;: {
            &quot;language&quot;: &quot;English&quot;,
            &quot;content&quot;: &quot;Last Article I Promise&quot;,
            &quot;author&quot;: &quot;USAID&quot;,
            &quot;locatoin&quot;: &quot;Lucknow&quot;,
            &quot;time&quot;: &quot;24/07/2020&quot;,
            &quot;imageURL&quot;: &quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
            &quot;link&quot;: &quot;mysite2.com&quot;,
            &quot;title&quot;: &quot;Lorem Ipsum v3&quot;
        },
        &quot;bmhhMM0meX98dP8JAJWk&quot;: {
            &quot;location&quot;: &quot;Lucknow&quot;,
            &quot;title&quot;: &quot;Lorem Ipsum v3&quot;,
            &quot;language&quot;: &quot;English&quot;,
            &quot;imageURL&quot;: &quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
            &quot;time&quot;: &quot;24/5/2001&quot;,
            &quot;content&quot;: &quot;Last Article I Promise&quot;,
            &quot;international&quot;: false,
            &quot;link&quot;: &quot;mysite2.com&quot;,
            &quot;author&quot;: &quot;Mohd Usaid&quot;
        },
        &quot;p8ayMlH9i6HUVqaQUiKW&quot;: {
            &quot;international&quot;: false,
            &quot;title&quot;: &quot;\&quot;स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\&quot;&quot;,
            &quot;language&quot;: &quot;Hindi&quot;,
            &quot;link&quot;: &quot;mysite2.com&quot;,
            &quot;content&quot;: &quot;\&quot;स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\&quot;  नई दिल्ली: भारत सरकार ने स्वदेशी हथियारों ( Indigenous Developed weapons) और सैन्य साजो सामान को निर्यात करने की रणनीति बनाई है, जिसमें भारत सरकार अपने राजनयिक संबंधों का भी इस्तेमाल करेगी, रक्षा मंत्रालय से जुड़े सूत्रों ने यह जानकारी दी,रक्षा उत्पादन विभाग के सचिव राजकुमार ने एक वेबिनार में कहा कि भारत सरकार मित्र देशों के राजनयिकों से संपर्क स्थापित कर यह जानने की रणनीति बना रही है कि उन्हें किस तरह के हथियारों और रक्षा सौदों की जरूरत है. ताकि भारतीय उत्पादक उनके हिसाब से रक्षा सामग्री का निर्माण कर सकें। कुमार ने कहा कि भारत सरकार अपने रक्षा प्रतिनिधियों, दूतावासों और राजनयिक चैनलों का इस्तेमाल मेक इन इंडिया के तहत बनाए जाने वाले हथियारों के निर्यात को बढ़ाने में करेगी।&quot;,
            &quot;location&quot;: &quot;Dhanbad&quot;,
            &quot;imageURL&quot;: &quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
            &quot;author&quot;: &quot;Sova&quot;,
            &quot;time&quot;: &quot;20/5/2020&quot;
        }
    }
}

答案1

得分: 1

{
   "articles":[
      {
         "international":true,
         "imageURL":"https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg",
         "location":"all",
         "link":"mysite2.com",
         "time":"23/4/58",
         "language":"English",
         "author":"Rze",
         "content":"Last Article I Promise",
         "title":"Lorem Ipsum v3"
      },
      {
         "language":"English",
         "content":"Last Article I Promise",
         "author":"USAID",
         "location":"Lucknow",
         "time":"24/07/2020",
         "imageURL":"https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg",
         "link":"mysite2.com",
         "title":"Lorem Ipsum v3"
      },
      {
         "location":"Lucknow",
         "title":"Lorem Ipsum v3",
         "language":"English",
         "imageURL":"https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg",
         "time":"24/5/2001",
         "content":"Last Article I Promise",
         "international":false,
         "link":"mysite2.com",
         "author":"Mohd Usaid"
      },
      {
         "international":false,
         "title":"\"स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\"",
         "language":"Hindi",
         "link":"mysite2.com",
         "content":"\"स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\"  नई दिल्ली: भारत सरकार ने स्वदेशी हथियारों ( Indigenous Developed weapons) और सैन्य साजो सामान को निर्यात करने की रणनीति बनाई है, जिसमें भारत सरकार अपने राजनयिक संबंधों का भी इस्तेमाल करेगी, रक्षा मंत्रालय से जुड़े सूत्रों ने यह जानकारी दी,रक्षा उत्पादन विभाग के सचिव राजकुमार ने एक वेबिनार में कहा कि भारत सरकार मित्र देशों के राजनयिकों से संपर्क स्थापित कर यह जानने की रणनीति बना रही है कि उन्हें किस तरह के हथियारों और रक्षा सौदों की जरूरत है. ताकि भारतीय उत्पादक उनके हिसाब से रक्षा सामग्री का निर्माण कर सकें। कुमार ने कहा कि भारत सरकार अपने रक्षा प्रतिनिधियों, दूतावासों और राजनयिक चैनलों का इस्तेमाल मेक इन इंडिया के तहत बनाए जाने वाले हथियारों के निर्यात को बढ़ाने में करेगी।",
         "location":"Dhanbad",
         "imageURL":"https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg",
         "author":"Sova",
         "time":"20/5/2020"
      }
   ]
}
英文:

Since you mentioned that this is a custom JSON. You need to change the JSON itself to make your code working.

{
&quot;articles&quot;:[ //this needs to be array not object
{
&quot;international&quot;:true,
&quot;imageURL&quot;:&quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
&quot;location&quot;:&quot;all&quot;,
&quot;link&quot;:&quot;mysite2.com&quot;,
&quot;time&quot;:&quot;23/4/58&quot;,
&quot;language&quot;:&quot;English&quot;,
&quot;author&quot;:&quot;Rze&quot;,
&quot;content&quot;:&quot;Last Article I Promise&quot;,
&quot;title&quot;:&quot;Lorem Ipsum v3&quot;
},
{
&quot;language&quot;:&quot;English&quot;,
&quot;content&quot;:&quot;Last Article I Promise&quot;,
&quot;author&quot;:&quot;USAID&quot;,
&quot;locatoin&quot;:&quot;Lucknow&quot;,
&quot;time&quot;:&quot;24/07/2020&quot;,
&quot;imageURL&quot;:&quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
&quot;link&quot;:&quot;mysite2.com&quot;,
&quot;title&quot;:&quot;Lorem Ipsum v3&quot;
},
{
&quot;location&quot;:&quot;Lucknow&quot;,
&quot;title&quot;:&quot;Lorem Ipsum v3&quot;,
&quot;language&quot;:&quot;English&quot;,
&quot;imageURL&quot;:&quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
&quot;time&quot;:&quot;24/5/2001&quot;,
&quot;content&quot;:&quot;Last Article I Promise&quot;,
&quot;international&quot;:false,
&quot;link&quot;:&quot;mysite2.com&quot;,
&quot;author&quot;:&quot;Mohd Usaid&quot;
},
{
&quot;international&quot;:false,
&quot;title&quot;:&quot;\&quot;स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\&quot;&quot;,
&quot;language&quot;:&quot;Hindi&quot;,
&quot;link&quot;:&quot;mysite2.com&quot;,
&quot;content&quot;:&quot;\&quot;स्वदेशी हथियारों का निर्यात करेगी भारत सरकार, राजनयिक संबंधों का भी करेगी इस्तेमाल\&quot;  नई दिल्ली: भारत सरकार ने स्वदेशी हथियारों ( Indigenous Developed weapons) और सैन्य साजो सामान को निर्यात करने की रणनीति बनाई है, जिसमें भारत सरकार अपने राजनयिक संबंधों का भी इस्तेमाल करेगी, रक्षा मंत्रालय से जुड़े सूत्रों ने यह जानकारी दी,रक्षा उत्पादन विभाग के सचिव राजकुमार ने एक वेबिनार में कहा कि भारत सरकार मित्र देशों के राजनयिकों से संपर्क स्थापित कर यह जानने की रणनीति बना रही है कि उन्हें किस तरह के हथियारों और रक्षा सौदों की जरूरत है. ताकि भारतीय उत्पादक उनके हिसाब से रक्षा सामग्री का निर्माण कर सकें। कुमार ने कहा कि भारत सरकार अपने रक्षा प्रतिनिधियों, दूतावासों और राजनयिक चैनलों का इस्तेमाल मेक इन इंडिया के तहत बनाए जाने वाले हथियारों के निर्यात को बढ़ाने में करेगी।&quot;,
&quot;location&quot;:&quot;Dhanbad&quot;,
&quot;imageURL&quot;:&quot;https://cdn.pixabay.com/user/2014/11/30/13-45-12-52_250x250.jpg&quot;,
&quot;author&quot;:&quot;Sova&quot;,
&quot;time&quot;:&quot;20/5/2020&quot;
}
]
}

Make your articles an array instead of object.
Try to remove those random key names from your article object names.
Your java code is fine its the custom JSON which has problem in it.

huangapple
  • 本文由 发表于 2020年10月9日 15:47:18
  • 转载请务必保留本文链接:https://go.coder-hub.com/64275970.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定