java - org.json.JSONException:值org.json.JSONArray 类型的无法转换为 JSONObject
问题描述
我是使用 API 和 JSON 文件的新手。我通过观看一些教程将这段代码放在一起,但在这一点上卡住了。这是代码:
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 数组:
[
{
"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"
}
]
我无法在这里弄清楚这个问题。我知道这里有一个非常小的问题。我希望你能在这里帮助我。
这是完整的 JSON:
{
"articles": {
"PHcgUZAwEHRlVZKXtxph": {
"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"
},
"PeIutXkKrL4Fftku6mKf": {
"language": "English",
"content": "Last Article I Promise",
"author": "USAID",
"locatoin": "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"
},
"bmhhMM0meX98dP8JAJWk": {
"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"
},
"p8ayMlH9i6HUVqaQUiKW": {
"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"
}
}
}
解决方案
既然您提到这是一个自定义 JSON。您需要更改 JSON 本身以使您的代码正常工作。
{
"articles":[ //this needs to be array not object
{
"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",
"locatoin":"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"
}
]
}
使您articles
的数组而不是对象。尝试从您的文章对象名称中删除这些随机键名称。您的 java 代码很好,它的自定义 JSON 有问题。
推荐阅读
- c# - Visual Studio C# - 如何关闭自动完成(不是智能感知)?
- c# - 如何在 Zedgraph 中设置其他 yaxis 的字体和大小?
- google-sheets - 如何在 Sheet2 中显示我的函数,其中另一个 Sheet1 中的数据在谷歌电子表格中?
- node.js - 在多个 CPU 内核上部署 NextJs (ReactJS)
- java - 素数计算结果不一致
- javascript - 如果在 chrome 中突出显示,则 HTML 输入范围类型将无法通过拖动操作使用
- javascript - 数据/状态更改时 React Re 是否渲染所有 UI 元素?
- java - 线程“主”java.lang.OutOfMemoryError 中的异常:在 ArrayList 中添加值时发生 Java 堆空间错误
- html - 为什么 Safari 会弄乱我的 div 的高度?
- excel - 当我尝试通过宏修改 PowerPoint 演示文稿时 Excel 硬崩溃