在Android网络交互中使用到JSON传输接收数据。
JSONObject为键值对形式的数据,内部使用LinkedHashMap实现。键的类型固定为String,值可取的类型在JSONObject, JSONArray, String, Boolean, Integer, Long, Double, NULL.
NULL是JSONObject中自定义的一个Object,代表键没有对应的值。其中覆盖了Object中的equals和toString方法:
public static final Object NULL = new Object() {
@Override public boolean equals(Object o) {
return o == this || o == null; // API specifies this broken equals implementation
}
@Override public String toString() {
return "null";
}
};
值不能取为 null,Double#isNaN(),Double#isInfinite()或其他任何没有列在这儿的值。
常用的方法:
构造JSONObject:
public JSONObject();
public JSONObject(Map copyFrom);
public JSONObject(JSONTokener readFrom) throws JSONException;
这个构造函数用来从符合JSON格式的String中构造JSONTokener,然后构造JSONObject。
public JSONObject(String json) throws JSONException {
this(new JSONTokener(json));
}

向JSONObject中写入数据:
put(String name, T value), T为Java基本类型boolean, double, int, long。在数据写入的过程中T会被包裹。
put(String name, Object value), 若value为null,name对应的键值对会从JSONObject中移除。

从JSONObject中读取数据:
public Object get(String name) throws JSONException;
public double getDouble(String name) throws JSONException;
public boolean getBoolean(String name) throws JSONException;
public int getInt(String name) throws JSONException;
public long getLong(String name) throws JSONException;
public String getString(String name) throws JSONException;
public JSONArray getJSONArray(String name) throws JSONException;
public JSONObject getJSONObject(String name) throws JSONException;

这些get方法在找不多值或值类型不匹配的时候都会抛出异常,注意异常处理。
get方法有一个无异常的版本。以Long举例:
public long optLong(String name); 在找不到值时返回OL
public long optLong(String name, long fallback):在找不到值时返回fallback

JSON使用的常见场景是构造JSONObject后转化会String发往服务器,或从服务器接收到String后转化为JSONObject。
JSONObject to String:
public String toString(); 将JSONObject对象转为String 比如这种格式:{"query":"Pizza","locations":[94043,90210]}
public String toString(int indentSpaces) throws JSONException;将JSON对象转换为带换行缩进的便于调试,阅读的String
比如下面的格式:
{
"query": "Pizza",
"locations": [
94043,
90210
]
}

String to JSONObject
使用JSONObject的构造函数:public JSONObject(String json) throws JSONException;

转载于:https://www.cnblogs.com/zoejiaen/p/4752374.html

JSON在Android网络交互中的使用方法相关推荐

  1. Android 网络交互之MD5为什么要加盐

    MD5为什么要加盐 之前面试的时候,遇到一个面试的哥哥.不停的跟我确认我对网络传输过程中的password进行MD5加密的时候,是否加key了. 当时我很纳闷,因为MD5本身已经是不可逆的了,需要破解 ...

  2. Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)

    MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...

  3. Android——网络交互,如何调用接口并且json解析json格式和pull解析xml格式

    本菜鸟因为之前一直使用的是公司前辈封装好的类(网络接口调用超级方便有木有)完全没有想过有一天我会自己写,然后今天接触的时候一脸懵逼,然后今天花了一天时间终于研究好了:哈哈哈哈哈 二话不说先上代码: p ...

  4. Android网络请求中的回调

    需求:高效地向服务器请求数据并解析. 涉及的主要工具类: HttpManager 大哥类.最重要的类,封装了GET和POST方法.所有的参数都要经过这个类发送给服务器. HttpRequestList ...

  5. Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结

    (1)commons-codec包简介 包含一些通用的编码解码算法.包括一些语音编码器,Hex,Base64.MD5 一.md5.base64.commons-codec包 commons-codec ...

  6. Android网络连接的两种方法:apache client和httpurlconnection的比较

    另见http://blog.csdn.net/mingli198611/article/details/8766585 在官方blog中,android工程师谈到了如何去选择apache client ...

  7. fetch vue读取json文件_fetch在vue中的使用方法

    1.安装fetch: npm install whatwg-fetch --save 2.在入口index.js文件中引入 import 'whatwg-fetch' 3.let url = glob ...

  8. 代谢网络重构中的iMAT方法

    1.引言 iMAT方法是生物信息学中用于重构生物代谢网络比较经典的方法之一,其余还有INIT,tINIT,FASTCORE等方法,有机会将会一一介绍. 首先附上iMAT方法两篇文献,无论怎么说还是直接 ...

  9. android 删除手机中图片的方法

    在app中删除手机中的图片,如果使用file的delete方法,会出现删除不干净的情况,这个时候留有一个空白的文件,还是会显示在相册中.经过调查后,发现是数据库中没有更新导致的,后来经过测试多款机型, ...

最新文章

  1. 由几道JS笔试题引发的知识点探究
  2. 计算机区块链的杂志,计算机类 | SPE诚邀区块链专刊(CCF B类,IF:1.338)
  3. jmeter 线程组与参数_jmeter接口测试基础篇之初步认识及参数化请求
  4. mongodb shell基础命令
  5. HTTPS 路径配置
  6. jdk1.8对synchronized锁的优化
  7. 网站扛住 100 亿次请求?我们来压测试一试
  8. Golang slice高级应用
  9. 开源代码是下一轮攻击潮的重灾区
  10. 路畅安卓最新固件升级_路畅导航系统固件升级大全下载 v1.51 官方版
  11. 世界上程序员最好的学习法:费曼学习法
  12. 成都瀚网科技:抖音发作品到底需要多久的时间才能够给流量呢?
  13. 究竟是谁,害了骑手小哥?
  14. JAVA random 缺陷_Random在高并发下的缺陷以及JUC对其的优化
  15. 世界空战史上的头号王牌空中杀手
  16. MEM/MBA数学基础(05)应用题 关键点
  17. 软件定制开发与软件外包有什么区别 ?
  18. Nuclei Studio IDE 安装及导入项目
  19. ⼤数据采集和可视化系统实现
  20. CEVA:IoT/人工智能/5G这些领域将在2018年强势增长

热门文章

  1. SVD(6.5.1定理证明观察3)
  2. 大数据如何影响百姓生活
  3. C# 大数组赋值给小数组,小数组赋值给大数组
  4. perl中-和=作用
  5. unity android 符号表,如何获取libunity.so的符号表
  6. rabbitmq-plugins.bat enable rabbitmq_management
  7. mysql数据库1对n_MySQL数据库InnnoDB引擎事务说明
  8. wince模拟器访问网络_在Wince模拟器接入网络的方法
  9. ios 各种锁的使用性能比较
  10. 理解 invokedynamic