在android中使用截击解析JSONObject中的JSONArray
我在这里遇到了麻烦 在服务器端有一些json代码。。。这里是json的一部分在android中使用截击解析JSONObject中的JSONArray,android,arrays,json,android-volley,jsonobject,Android,Arrays,Json,Android Volley,Jsonobject,我在这里遇到了麻烦 在服务器端有一些json代码。。。这里是json的一部分 { “状态”:“确定”, “计数”:10, “总数”:88, “页数”:9页, “员额”: [{ “id”:1530, “类型”:“职位”, “slug”:“slug”, “url”:“url”, “状态”:“发布”, “头衔”:“头衔”, “头衔”:“某物”, “内容”:“部分内容”, “修改”:“2016-05-22 20:21:47”, “类别”:[{“诸如此类”:“诸如此类”}] }] }这是打字错误还是什么
{
“状态”:“确定”,
“计数”:10,
“总数”:88,
“页数”:9页,
“员额”:
[{
“id”:1530,
“类型”:“职位”,
“slug”:“slug”,
“url”:“url”,
“状态”:“发布”,
“头衔”:“头衔”,
“头衔”:“某物”,
“内容”:“部分内容”,
“修改”:“2016-05-22 20:21:47”,
“类别”:[{“诸如此类”:“诸如此类”}]
}]
}
这是打字错误还是什么,但您的JSON无效您在这里有两个双引号“url”:“url”
。只需移除一个
只要这样做:
JsonObjectRequest obreq = new JsonObjectRequest(Request.Method.GET, url, new
Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray obj = response.getJSONArray("posts");
for (int i = 0; i < obj.length(); i++) {
JSONObject jsonObject = obj.getJSONObject(i);
int id = jsonObject.getInt("id");
String type = jsonObject.getString("type");
// retrieve the values like this so on..
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
},null);
JsonObjectRequest obreq=newjsonobjectrequest(Request.Method.GET,url,new
Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray obj=response.getJSONArray(“posts”);
对于(int i=0;i
是打字错误还是其他什么,但您的JSON无效您在此处有两个双引号“url”:“url”
。只需删除一个即可
只要这样做:
JsonObjectRequest obreq = new JsonObjectRequest(Request.Method.GET, url, new
Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray obj = response.getJSONArray("posts");
for (int i = 0; i < obj.length(); i++) {
JSONObject jsonObject = obj.getJSONObject(i);
int id = jsonObject.getInt("id");
String type = jsonObject.getString("type");
// retrieve the values like this so on..
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
},null);
JsonObjectRequest obreq=newjsonobjectrequest(Request.Method.GET,url,new
Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray obj=response.getJSONArray(“posts”);
对于(int i=0;i
首先创建模型:
public class CategoryModel
{
public String blah;
}
public class PostModel
{
public int id;
public String type;
public String slug;
public String url;
public String status;
public String title;
public String title_plain;
public String content;
public String modified;
public List<CategoryModel> categories;
}
public class PostsModel
{
public String status;
public int count;
public int count_total;
public int pages;
public List<PostModel> posts;
}
然后在代码中获取对象:
JSONObject json;
Gson gson = new Gson();
try {
json = new JSONObject(yourJsonString)
PostsModel result = gson.fromJson(json, PostsModel.class);
return result; // this is your deserialized response object
}catch(Exception e){
}
截击:
应用程序内类:
private VolleyServiceSingleton mVolleySingleton;
private RequestQueue mVolleyApiClient;
创建时:
mVolleySingleton = VolleyServiceSingleton.getInstance();
mVolleyApiClient = mVolleySingleton.gerRequestQueue();
字符串请求:
class VolleyStringRequest extends StringRequest
{
private Map<String, String> mParams;
public VolleyStringRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener, Map<String, String> requestParams) {
super(method, url, listener, errorListener);
mParams = requestParams;
afterRequestErrorRunnable = null;
Log.e("Request",url);
}
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
try {
Log.e("errorResponse", new String( volleyError.networkResponse.data, "utf-8" ));
}catch(Exception e){
}
}
return super.parseNetworkError(volleyError);
}
@Override
public RetryPolicy getRetryPolicy() {
DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(
TIMEOUT_IN_MILLISECONDS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
return retryPolicy;
}
@Override
public Map getHeaders() throws AuthFailureError {
Map headers = new HashMap();
headers.put("Accept-Charset","utf-8");
//headers.put("Accept", RITEAID_HTTP_CONTENT_TYPE);
return headers;
}
@Override
public Map<String, String> getParams() {
return mParams;
}
}
class-VolleyStringRequest扩展了StringRequest
{
私人地图;
publicVolleyStringRequest(int方法、字符串url、Response.Listener、Response.ErrorListener ErrorListener、MapRequestParams){
super(方法、url、侦听器、errorListener);
mParams=请求参数;
afterRequestErrorRunnable=null;
Log.e(“请求”,url);
}
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
试一试{
Log.e(“errorResponse”,新字符串(volleyError.networkResponse.data,“utf-8”);
}捕获(例外e){
}
}
返回super.parseNetworkError(截击错误);
}
@凌驾
公共RetryPolicy getRetryPolicy(){
DefaultRetryPolicy retryPolicy=新的DefaultRetryPolicy(
超时(以毫秒为单位),
DefaultRetryPolicy.DEFAULT\u最大重试次数,
DefaultRetryPolicy.DEFAULT\u BACKOFF\u MULT);
退货政策;
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“接受字符集”、“utf-8”);
//headers.put(“接受”,RITEAID\u HTTP\u CONTENT\u TYPE);
返回标题;
}
@凌驾
公共映射getParams(){
返回内存;
}
}
和请求(必须自定义):
HashMap paramMap=newhashmap();
paramMap.put(“在用户名电子邮件中签名”,Utils.nulltoString(用户名));
paramMap.put(“在密码中签名”,密码!=null?Utils.passwordConvert(密码):”);
paramMap.put(“key”,Constants.API_key);
mResponseHandler=getResponseHandler(requestUrl,positiveResponseFunc,inClass);
VolleyStringRequest request=新的VolleyStringRequest(request.Method.POST、getFinalUrl(requestUrl,null)、getResponseHandler(requestUrl,positiveResponseFunc,inClass)、createErrorListener(context,progress)、paramMap);
请求。设置策略(mRetryPolicy);
request.setTag(request_TAG);
mVolleyApiClient.add(请求);
首先创建模型:
public class CategoryModel
{
public String blah;
}
public class PostModel
{
public int id;
public String type;
public String slug;
public String url;
public String status;
public String title;
public String title_plain;
public String content;
public String modified;
public List<CategoryModel> categories;
}
public class PostsModel
{
public String status;
public int count;
public int count_total;
public int pages;
public List<PostModel> posts;
}
然后在代码中获取对象:
JSONObject json;
Gson gson = new Gson();
try {
json = new JSONObject(yourJsonString)
PostsModel result = gson.fromJson(json, PostsModel.class);
return result; // this is your deserialized response object
}catch(Exception e){
}
截击:
应用程序内类:
private VolleyServiceSingleton mVolleySingleton;
private RequestQueue mVolleyApiClient;
创建时:
mVolleySingleton = VolleyServiceSingleton.getInstance();
mVolleyApiClient = mVolleySingleton.gerRequestQueue();
字符串请求:
class VolleyStringRequest extends StringRequest
{
private Map<String, String> mParams;
public VolleyStringRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener, Map<String, String> requestParams) {
super(method, url, listener, errorListener);
mParams = requestParams;
afterRequestErrorRunnable = null;
Log.e("Request",url);
}
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
try {
Log.e("errorResponse", new String( volleyError.networkResponse.data, "utf-8" ));
}catch(Exception e){
}
}
return super.parseNetworkError(volleyError);
}
@Override
public RetryPolicy getRetryPolicy() {
DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(
TIMEOUT_IN_MILLISECONDS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
return retryPolicy;
}
@Override
public Map getHeaders() throws AuthFailureError {
Map headers = new HashMap();
headers.put("Accept-Charset","utf-8");
//headers.put("Accept", RITEAID_HTTP_CONTENT_TYPE);
return headers;
}
@Override
public Map<String, String> getParams() {
return mParams;
}
}
class-VolleyStringRequest扩展了StringRequest
{
私人地图;
publicVolleyStringRequest(int方法、字符串url、Response.Listener、Response.ErrorListener ErrorListener、MapRequestParams){
super(方法、url、侦听器、errorListener);
mParams=请求参数;
afterRequestErrorRunnable=null;
Log.e(“请求”,url);
}
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
试一试{
Log.e(“errorResponse”,新字符串(volleyError.networkResponse.data,“utf-8”);
}捕获(例外e){
}
}
返回super.parseNetworkError(截击错误);
}
@凌驾
公众的