android h5返回json怎么解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android h5返回json怎么解析相关的知识,希望对你有一定的参考价值。
参考技术A JSON的定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。 – Json.org
JSON Vs XML
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与javascript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML.
Tomcat安装:
Tomcat下载地址http://tomcat.apache.org/ 下载后安装,如果成功,启动Tomcat,然后在浏览器里输入:http://localhost:8080/index.jsp,会有个Tomcat首页界面,
新建一个android工程JsonDemo.
[java] view plain
copy
package com.tutor.jsondemo;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.protocol.HTTP;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
/**
* @author frankiewei.
* Json封装的工具类.
*/
public class JSONUtil
private static final String TAG = "JSONUtil";
/**
* 获取json内容
* @param url
* @return JSONArray
* @throws JSONException
* @throws ConnectionException
*/
public static JSONObject getJSON(String url) throws JSONException, Exception
return new JSONObject(getRequest(url));
/**
* 向api发送get请求,返回从后台取得的信息。
*
* @param url
* @return String
*/
protected static String getRequest(String url) throws Exception
return getRequest(url, new DefaultHttpClient(new BasicHttpParams()));
/**
* 向api发送get请求,返回从后台取得的信息。
*
* @param url
* @param client
* @return String
*/
protected static String getRequest(String url, DefaultHttpClient client) throws Exception
String result = null;
int statusCode = 0;
HttpGet getMethod = new HttpGet(url);
Log.d(TAG, "do the getRequest,url="+url+"");
try
//getMethod.setHeader("User-Agent", USER_AGENT);
HttpResponse httpResponse = client.execute(getMethod);
//statusCode == 200 正常
statusCode = httpResponse.getStatusLine().getStatusCode();
Log.d(TAG, "statuscode = "+statusCode);
//处理返回的httpResponse信息
result = retrieveInputStream(httpResponse.getEntity());
catch (Exception e)
Log.e(TAG, e.getMessage());
throw new Exception(e);
finally
getMethod.abort();
return result;
/**
* 处理httpResponse信息,返回String
*
* @param httpEntity
* @return String
*/
protected static String retrieveInputStream(HttpEntity httpEntity)
int length = (int) httpEntity.getContentLength();
//the number of bytes of the content, or a negative number if unknown. If the content length is known but exceeds Long.MAX_VALUE, a negative number is returned.
//length==-1,下面这句报错,println needs a message
if (length < 0) length = 10000;
StringBuffer stringBuffer = new StringBuffer(length);
try
InputStreamReader inputStreamReader = new InputStreamReader(httpEntity.getContent(), HTTP.UTF_8);
char buffer[] = new char[length];
int count;
while ((count = inputStreamReader.read(buffer, 0, length - 1)) > 0)
stringBuffer.append(buffer, 0, count);
catch (UnsupportedEncodingException e)
Log.e(TAG, e.getMessage());
catch (IllegalStateException e)
Log.e(TAG, e.getMessage());
catch (IOException e)
Log.e(TAG, e.getMessage());
return stringBuffer.toString();
本回答被提问者采纳
android 怎么用json解析接口(本人新手,请大手帮忙解决下)
2.1登录接口(前5次不含验证码)
接口名称 登录
接口示例 https://id.ifeng.com/api/simplelogin?&u=<用户登录凭证>&k=<用户验证码>&type=<用户类型>&auth=<用户验证码>&auto=<是否开启自动登录>&comefrom=<系统识别码>&pf=<登陆平台>&callback=<用于jsonp>&cb=<urlencode后的地址(必须以http://或https://开始)>
接口描述 使用用户名,手机号,邮箱进行登录,登陆5次失败后,需要填写验证码。
接口协议 HTTPS[POST]
参数说明 u 用户登录标志,可以是用户名(username),邮箱(email),手机(mobile) 必填
k 密码(password) 必填
type 类型标志,只能是1,2,3分别对应用户名,邮箱,手机 必填
auth 用户验证码 失败5次后必填
auto 自动登录, 可以添true或者false.默认为false 选填
comefrom 系统识别码,详见系统识别号定义. 默认为1(主站) 选填
pf 平台识别码,详见平台识别号定义. 默认为1(网页) 选填
callback 如果使用此参数,返回类型将成为jsonp形式. 默认为无 选填
cb 跳转地址,传入后将在返回值中体现.默认为无 选填
rt(暂不可用) 返回值类型,默认json 选填
返回值约定(json格式) 登录失败时,显示相应的失败信息 成功时:
"code":1,"message":"\u64cd\u4f5c\u6210\u529f","data":"res":"0","token":"59A1770B1F0A1F394C348F644C956548zergcless","turl":["http:\/\/id.ifeng.com\/index.php\/callback\/set","http:\/\/id.ifeng.com.tw\/set.php","http:\/\/id.phoenixtv.com\/set.php"],"uname":"zergcless","month":0,"url":"http:\/\/id.ifeng.com\/public\/middle?url=http%3A%2F%2Fmy.ifeng.com%2F%3F_c%3Duser%26_a%3Dcenter&sid=59A1770B1F0A1F394C348F644C956548zergcless&u=zergcless"
失败时:
"code":0,"message":"\u9a8c\u8bc1\u7801\u9519\u8bef","data":"authcode":true
备注 Data数据说明 res: 返回状态约束(接入系统可以忽略)
token: sid表示新的用户体系中用户令牌
url:表示需要跳转的地址(接入系统可以忽略)
turl:凤凰网三个域下cookie设置接口(接入系统可以忽略)
uname:用户登录使用的登录凭证,用于用户名展示
month:为用户令牌有效期一个月
authcode:多次失败后产生才会出现,如果收到那么下次请求需要戴上验证码。
你可以参考下我这段代码:
public Object parseMap_Sub(String str)
try
Map<String, Object> map = JSON.parseObject(str);
JSONArray jsonArray = (JSONArray) map.get("data");
List<NearMap_Info> list_detial = new ArrayList<NearMap_Info>();
for (Object o : jsonArray)
Map<String, String> map_1 = (Map<String, String>) o;
NearMap_Info audio_info = new NearMap_Info();
//audio_info.setSize((String) map.get("size"));
audio_info.setFlag(map_1.get("flag"));
audio_info.setTitle(map_1.get("title"));
audio_info.setUrl(map_1.get("url"));
audio_info.setType(map_1.get("type"));
audio_info.setId(map_1.get("id"));
audio_info.setImg(map_1.get("img"));
list_detial.add(audio_info);
ro.result = true;
ro.obj = list_detial;
catch (Exception e)
e.printStackTrace();
ro.result = false;
return ro;
本回答被提问者采纳 参考技术B 我也正在头疼这个解析~~ 参考技术C 自己上网找一下android 解析json 吧网上大把例子,没必要在百度提问
以上是关于android h5返回json怎么解析的主要内容,如果未能解决你的问题,请参考以下文章
解析json在模板中的django modelformset中返回