《2021电大《Android网络开发技术》形考任务一教学实践1答案》由会员分享,可在线阅读,更多相关《2021电大《Android网络开发技术》形考任务一教学实践1答案(7页珍藏版)》请在金锄头文库上搜索。
1、2021国家开放大学电大Android网络开发技术形考任务一教学实践1答案形考任务一教学实践1完成以下JSON的解析,完成主体代码即可,解析方法及库不限。一、什么是JSON?JSON是一种取代XM L的数据结构,和 xm l相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。JSON就是一串字符串只不过元素会使用特定的符号标注。双括号表示对象 中括号表示数组 双引号内是属性或值:冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)所 以 name:Michael)可以理解为是一个包含name为 Michael的对象Wname:Mich
2、ael),name:Jerry就表示包含两个对象的数组当然了,你也可以使用name:Michael,Jerry来简化上面一部,这是一个拥有一个name数组的对象二、JSON解析之传统的JSON解析1、生成json字符串public static String createJsonString(String key,Object value)JSONObject jsonObject=new JSONObject();jsonObject.put(key,value);return jsonObject.toString();2、解析JSON字符串分为以下三种情况,一个Java B ean,一个
3、List数组,一个嵌套Map的 List数组:import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONObject;import com.android.myjson.domain.Person;/*完成对json数据的解析*/public class JsonTools public static Person get
4、Person(String key,String jsonString)Person person=new Person();try(JSONObject jsonObject=new JSONObject(jsonString);JSONObject personobject=jsonObject.getJSONObject(person);person.setld(personObject.getlnt(id);person.setName(personObject.getString(name);person.setAddress(personObject.getString(addre
5、ss);catch(Exception e)/TODO:handle exception)return person;)public static List getPersons(String key,String jsonString)List list=new ArrayList();try(JSONObject jsonObject=new JSONObject(jsonString);/返回json的数组JSONArray jsonArray=jsonObject.getJSONArray(key);for(int i=0;i jsonArray.length();i+)JSONObj
6、ect jsonObject?=jsonArray.getJSONObject(i);Person person=new Person();person.setld(jsonObject2.getlnt(id);person.setName(jsonObject2.getString(name);person.setAddress(jsonObject2.getString(address);list.add(person);)catch(Exception e)/TODO:handle exception)return list;)public static List getList(Str
7、ing key,String jsonString)List list=new ArrayList();try(JSONObject jsonObject=new JSONObject(jsonString);JSONArray jsonArray=jsonObject.getlSONArray(key);for(int i=0;i listKeyMaps(String key,String jsonString)List list=new ArrayList();try(JSONObject jsonObject=new JSONObject(jsonString);JSONArray js
8、onArray=jsonObject.getlSONArray(key);for(int i=0;i().getType();catch(Exception e)return list;)/*param jsonString*return*/public static List getList(String jsonString)List list=new ArrayList();try(Gson gson=new Gson();list=gson.fromJson(jsonString,newTypeToken().getType();catch(Exception e)/TODO:hand
9、le exception)return list;)public static List listKeyMaps(String jsonString)List list=new ArrayUst();try(Gson gson=new Gson();list=gson.fromJson(jsonString,new TypeToken().getType();catch(Exception e)/TODO:handle exception)return list;三、JSON 解析之 FastJSONimport java.util.ArrayList;import java.util.Lis
10、t;import java.util.Map;import com.alibaba.fastjson JSON;import com.alibaba.fastjson.TypeReference;public class JsonTool public static T getPerson(String jsonstring,Class cis)T t=null;try(t=JSON.parseObject(jsonstring,cis);catch(Exception e)/TODO:handle exception)return t;public static List getPerson
11、List(String jsonstring,Class cis)List list=new ArrayList();try(list=JSON.parseArray(jsonstring,cis);catch(Exception e)/TODO:handle exceptionreturn list;public static List getPersonListMapl(String jsonstring)List list=new ArrayList();trylist=JSON.parseObject(jsonstringznew TypeReference().getType();catch(Exception e)/TODO:handle exceptionreturn list;)总结:JSON对于移动设备来说,尤其对于网络环境较差和流量限制的情况下,相对于XML格式的数据传输会更节省流量,传输效率更高。在这三种解析方式中FastJson是效率最高的,推荐使用