在android中解析json数据时出错
我试图显示从json数据源接收的数据。但是当我试图解析数据时,我遇到了一个错误。我想不出怎么解决它 json数据如下所示: 以下是我为解析编写的函数:在android中解析json数据时出错,android,json,parsing,Android,Json,Parsing,我试图显示从json数据源接收的数据。但是当我试图解析数据时,我遇到了一个错误。我想不出怎么解决它 json数据如下所示: 以下是我为解析编写的函数: public void makeJSONRequest() { JsonArrayRequest req = new JsonArrayRequest(endpoint_final, new Response.Listener<JSONArray>() { @Overr
public void makeJSONRequest() {
JsonArrayRequest req = new JsonArrayRequest(endpoint_final,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
// UI
swipeRefreshLayout.setRefreshing(false);
for (int i = 0; i < response.length(); i++) {
try {
JSONObject object = response.getJSONObject(i);
JSONObject newsItems = object.getJSONObject("newsItems");
for (int j = 0; j < newsItems.length(); j++) {
titles[j] = newsItems.getString("title");
snips[j] = newsItems.getString("snip");
links[j] = newsItems.getString("link");
}
} catch (JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
Toast.makeText(getActivity(), "JSON Parsing error", Toast.LENGTH_LONG).show();
}
}
mAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(getContext(), "Error Receiving News", Toast.LENGTH_LONG).show();
}
});
// Adding request to request queue
InitializeVolley.getInstance().addToRequestQueue(req);
}
public void makeJSONRequest(){
JsonArrayRequest req=新的JsonArrayRequest(端点\最终,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
//用户界面
swipeRefreshLayout.setRefreshing(false);
对于(int i=0;i
我得到的错误是:
错误:org.json.JSONException:值{“新闻项”:[{“链接”:”http://www.srmuniv.ac.in/announcement/special-training-details“,”snip:“亲爱的学生们,那些对实习感兴趣的人必须遵循某些指导原则。你必须通过CDC进行的测试,并且只有那些…”,“标题”:“CDC:特殊培训-更新”}
任何帮助都将不胜感激。
谢谢!首先,此json不是数组,而是对象。您应该使用JsonObjectRequest而不是JsonArrayRequest。您错误地解析了json
public void makeJSONRequest() {
JsonObjectRequest req = new JsonObjectRequest(endpoint_final,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
// UI
swipeRefreshLayout.setRefreshing(false);
JSONArray newsAr = response.getJsonArray("news");
for (int i = 0; i < newsAr.length(); i++) {
try {
JSONObject newsItem = newsAr.getJSONObject(i);
titles[j] = newsItem.getString("title");
snips[j] = newsItem.getString("snip");
links[j] = newsItem.getString("link");
} catch (JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
Toast.makeText(getActivity(), "JSON Parsing error", Toast.LENGTH_LONG).show();
}
}
mAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(getContext(), "Error Receiving News", Toast.LENGTH_LONG).show();
}
});
// Adding request to request queue
InitializeVolley.getInstance().addToRequestQueue(req);
}
public void makeJSONRequest(){
JsonObjectRequest req=新的JsonObjectRequest(端点_final,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.d(TAG,response.toString());
//用户界面
swipeRefreshLayout.setRefreshing(false);
JSONArray newsAr=response.getJsonArray(“新闻”);
对于(int i=0;i
首先,此json不是数组,而是对象。您应该使用JsonObjectRequest而不是JsonArrayRequest。您错误地解析了json
public void makeJSONRequest() {
JsonObjectRequest req = new JsonObjectRequest(endpoint_final,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
// UI
swipeRefreshLayout.setRefreshing(false);
JSONArray newsAr = response.getJsonArray("news");
for (int i = 0; i < newsAr.length(); i++) {
try {
JSONObject newsItem = newsAr.getJSONObject(i);
titles[j] = newsItem.getString("title");
snips[j] = newsItem.getString("snip");
links[j] = newsItem.getString("link");
} catch (JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
Toast.makeText(getActivity(), "JSON Parsing error", Toast.LENGTH_LONG).show();
}
}
mAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(getContext(), "Error Receiving News", Toast.LENGTH_LONG).show();
}
});
// Adding request to request queue
InitializeVolley.getInstance().addToRequestQueue(req);
}
public void makeJSONRequest(){
JsonObjectRequest req=新的JsonObjectRequest(端点_final,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.d(TAG,response.toString());
//用户界面
swipeRefreshLayout.setRefreshing(false);
JSONArray newsAr=response.getJsonArray(“新闻”);
对于(int i=0;i
取代
JSONArray newsItems = object.getJSONArray("newsItems");
取代
JSONArray newsItems = object.getJSONArray("newsItems");
JSONObject object=newjsonobject[response];
JSONArray newsItems=object.getJSONArray(“newsItems”);
对于(int j=0;jpublic void makeJSONRequest() {
JsonArrayRequest req = new JsonArrayRequest(endpoint_final,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
// UI
swipeRefreshLayout.setRefreshing(false);
jo = new JSONObject(response);;
JSONArray array = jo.getJSONArray("newsItems");
for (int x = 0; x < array.length(); x++) {
try {
titles[j] = array.getJSONObject(x).optString("title");
snips[j]= array.getJSONObject(x).optString("snip");
links[j] = array.getJSONObject(x).optString("link");
} catch (JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
Toast.makeText(getActivity(), "JSON Parsing error", Toast.LENGTH_LONG).show();
}
}
mAdapter.notifyDataSetChanged();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(getContext(), "Error Receiving News", Toast.LENGTH_LONG).show();
}
}
);
// Adding request to request queue
InitializeVolley.getInstance().addToRequestQueue(req);
}
try {
JSONObject objResponse = new JSONObject(response.toString());
JsonArray arrResponse = objResponse.getJSONArray("newsItems");
for (int i = 0; i < arrResponse.size(); i++) {
JSONObject objItems = arrResponse.get(i);
String link = objItems.getString("link");
}
}catch (Exception e){
e.printStackTrace();
}