Android之解析Json数据 .
16lz
2021-01-26
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。
在Android中被广泛运用于客户端和网络(或者说服务器)通信。
JSON 表示名称 / 值对的方式
按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":
{ "name": "Brett", "lage":22,"sex": "女" } ,这表示了一个JsonObject。
[{name:"张三:",age:21,sex:"女"},{name:"李斯",age:21,sex:"女"},{name:"王五",age:21,sex:"女"}],使用中括弧表示JsonArray,是json对象数组。
一、解析第一种单个json对象的json数据。数据从网络上获取。演示实例为 查询手机号码归属地。
[java] view plain copy print ?
- URLurl;
- StringBuffersb=newStringBuffer();
- Stringline=null;
- try{
- url=newURL(
- "http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");
- HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
- InputStreamis=conn.getInputStream();
- BufferedReaderbuffer=newBufferedReader(
- newInputStreamReader(is));
- while((line=buffer.readLine())!=null){
- sb.append(line);
- }
- }catch(MalformedURLExceptione){
- e.printStackTrace();
- }catch(IOExceptione){
- e.printStackTrace();
- }
URL url;StringBuffer sb = new StringBuffer();String line = null;try {url = new URL("http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream is = conn.getInputStream();BufferedReader buffer = new BufferedReader(new InputStreamReader(is));while ((line = buffer.readLine()) != null) {sb.append(line);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
此处获取的数据为:
querycallback({"Mobile":"13763******","QueryResult":"True","Province":"广东","City":"湛江","AreaCode":"0759","PostCode":"524000","Corp":"中国移动","Card":"GSM"});
需要截取这个json对象出来。
String js = sb.substring(sb.indexOf("{"), sb.indexOf("}") + 1);
下面函数解析json对象,返回一个Callerloc对象
Callerloc是一个实体类
[html] view plain copy print ?- privateCallerlocparse(Stringjson){
- Callerlocmy=null;
- if(json==null||json.length()<1)
- returnnull;
- try{
- my=newCallerloc();
- JSONObjectjsonobj=newJSONObject(json);
private Callerloc parse(String json) {Callerloc my = null;if (json == null || json.length() < 1)return null;try {my = new Callerloc();JSONObject jsonobj = new JSONObject(json);[html] view plain copy print ?
- my.setMobile(jsonobj.getString("Mobile"));
- my.setQueryResult(jsonobj.getString("QueryResult"));
- my.setProvince(jsonobj.getString("Province"));
- my.setCity(jsonobj.getString("City"));
- my.setAreaCode(jsonobj.getString("AreaCode"));
- my.setPostCode(jsonobj.getString("PostCode"));
- my.setCard(jsonobj.getString("Card"));
- my.setCorp(jsonobj.getString("Corp"));
my.setMobile(jsonobj.getString("Mobile"));my.setQueryResult(jsonobj.getString("QueryResult"));my.setProvince(jsonobj.getString("Province"));my.setCity(jsonobj.getString("City"));my.setAreaCode(jsonobj.getString("AreaCode"));my.setPostCode(jsonobj.getString("PostCode"));my.setCard(jsonobj.getString("Card"));my.setCorp(jsonobj.getString("Corp"));[html] view plain copy print ?
- }catch(JSONExceptione){
- e.printStackTrace();
- }
- returnmy;
- }
} catch (JSONException e) {e.printStackTrace();}return my;}
二、解析json数组
json数据为:[{name:"张三:",age:21,sex:"女"},{name:"李斯",age:21,sex:"女"},{name:"王五",age:21,sex:"女"}]
返回list
[java] view plain copy print ?- privateArrayList<myjson>parsem(Stringjson){
- myjsonmy=null;
- if(json==null||json.length()<1)
- returnnull;
- try{
- JSONArrayjsonary=newJSONArray(json);
- ArrayList<myjson>objlist=newArrayList<myjson>();
- for(inti=0;i<jsonary.length();i++){
- my=newmyjson();
- JSONObjectjsonobj=jsonary.getJSONObject(i);
- my.set_name(jsonobj.getString("name"));
- my.set_age(jsonobj.getInt("age"));
- my.set_sex(jsonobj.getString("sex"));
- objlist.add(my);
- }
- returnobjlist;
- }catch(JSONExceptione){
- e.printStackTrace();
- }
- returnnull;
- }
更多相关文章
- android保存文件到sd卡,读取和清空记录功能(可以用来保存用户名和
- Android(安卓)如何解析Xml字符串
- Android(安卓)Architecture Components 部分源码代码分析
- android中handler 轮询数据变化 使用WeakReference防止内存泄露
- Android(安卓)布局转化为View对象的两种方法
- Android的数据存储之SharedPreferences1
- ContentProvider 详解
- Android(安卓)ApiDemos示例解析(73):Graphics->Points
- android 里面的 Drawable 和 ConstantState