当前位置: 首页 > news >正文

黄岛网站建设服务百度网站域名

黄岛网站建设服务,百度网站域名,wordpress资源网源码,延吉网站建设公司ybdiranAndroid 原生解析 JSON 字符串 1. JSON 基础2. Android 原生 JSON 解析方法2.1 解析 JSON 字符串到 JSONObject关键方法 2.2 解析 JSON 数组到 JSONArray关键方法 2.3 解析嵌套的 JSON 对象 3. 处理异常4. 总结 在 Android 开发中,我们经常需要从服务器获取 JSON 格…

Android 原生解析 JSON 字符串

    • 1. JSON 基础
    • 2. Android 原生 JSON 解析方法
      • 2.1 解析 JSON 字符串到 JSONObject
        • 关键方法
      • 2.2 解析 JSON 数组到 JSONArray
        • 关键方法
      • 2.3 解析嵌套的 JSON 对象
    • 3. 处理异常
    • 4. 总结

在 Android 开发中,我们经常需要从服务器获取 JSON 格式的数据,并将其解析为我们可以操作的对象。尽管 Android 有很多第三方库可以帮助我们解析 JSON(如 Gson、Moshi、Fastjson 等),但了解如何使用 Android 原生工具来解析 JSON 数据对于深入理解 JSON 处理机制是非常有帮助的。

1. JSON 基础

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON 格式的数据通常以键值对的形式出现,支持嵌套结构和数组。

例如,以下是一个简单的 JSON 字符串:

{"name": "John","age": 30,"email": "john@example.com","address": {"street": "123 Main St","city": "Anytown"},"phoneNumbers": ["123-456-7890","987-654-3210"]
}

2. Android 原生 JSON 解析方法

在 Android 中,org.json 是一个内置的库,它提供了一些类来解析和构建 JSON 数据。这些类包括:

  • JSONObject:用于解析和操作 JSON 对象。
  • JSONArray:用于解析和操作 JSON 数组。

2.1 解析 JSON 字符串到 JSONObject

JSONObject 是 Android 中用于解析 JSON 对象的核心类。如果 JSON 数据是一个对象,我们首先使用 JSONObject 类来解析。

import org.json.JSONException;
import org.json.JSONObject;public class JsonParser {public static void main(String[] args) {// JSON 字符串String jsonString = "{\"name\":\"John\", \"age\":30, \"email\":\"john@example.com\"}";try {// 创建 JSONObject 实例JSONObject jsonObject = new JSONObject(jsonString);// 通过 get 方法获取对应的字段String name = jsonObject.getString("name");int age = jsonObject.getInt("age");String email = jsonObject.getString("email");// 输出解析结果System.out.println("Name: " + name);System.out.println("Age: " + age);System.out.println("Email: " + email);} catch (JSONException e) {e.printStackTrace();}}
}
关键方法
  • getString(String key):获取字符串类型的值。
  • getInt(String key):获取整数类型的值。
  • getDouble(String key):获取浮动类型的值。
  • getBoolean(String key):获取布尔类型的值。

如果键不存在或类型不匹配,会抛出 JSONException

2.2 解析 JSON 数组到 JSONArray

如果 JSON 数据包含数组,我们可以使用 JSONArray 类来解析。

import org.json.JSONArray;
import org.json.JSONException;public class JsonArrayParser {public static void main(String[] args) {// JSON 数组字符串String jsonArrayString = "[\"123-456-7890\", \"987-654-3210\"]";try {// 创建 JSONArray 实例JSONArray jsonArray = new JSONArray(jsonArrayString);// 遍历数组并获取每个元素for (int i = 0; i < jsonArray.length(); i++) {String phoneNumber = jsonArray.getString(i);System.out.println("Phone Number: " + phoneNumber);}} catch (JSONException e) {e.printStackTrace();}}
}
关键方法
  • getString(int index):根据索引获取字符串类型的值。
  • getInt(int index):根据索引获取整数类型的值。
  • length():返回数组的长度。

2.3 解析嵌套的 JSON 对象

如果 JSON 字符串包含嵌套的对象或数组,我们可以递归解析这些数据。

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;public class NestedJsonParser {public static void main(String[] args) {// 嵌套 JSON 字符串String nestedJsonString = "{" +"\"name\": \"John\"," +"\"address\": {" +"\"street\": \"123 Main St\"," +"\"city\": \"Anytown\"" +"}," +"\"phoneNumbers\": [" +"\"123-456-7890\"," +"\"987-654-3210\"" +"]" +"}";try {// 创建 JSONObject 实例JSONObject jsonObject = new JSONObject(nestedJsonString);// 获取顶层字段String name = jsonObject.getString("name");JSONObject address = jsonObject.getJSONObject("address");JSONArray phoneNumbers = jsonObject.getJSONArray("phoneNumbers");// 解析嵌套的 address 对象String street = address.getString("street");String city = address.getString("city");// 输出结果System.out.println("Name: " + name);System.out.println("Street: " + street);System.out.println("City: " + city);// 解析 phoneNumbers 数组for (int i = 0; i < phoneNumbers.length(); i++) {String phoneNumber = phoneNumbers.getString(i);System.out.println("Phone Number: " + phoneNumber);}} catch (JSONException e) {e.printStackTrace();}}
}

在上面的例子中,我们先解析了 JSON 对象中的顶层数据,然后通过 getJSONObject 方法进一步获取嵌套的 JSON 对象,并通过 getJSONArray 方法获取 JSON 数组。

3. 处理异常

在 JSON 解析过程中,常见的异常包括:

  • JSONException:通常是由于 JSON 格式不正确或者类型不匹配引起的。
  • NullPointerException:当某个键对应的值为 null 时,访问该值可能会引发 NullPointerException

为了提高代码的健壮性,我们可以使用 opt 系列方法来代替 get 系列方法,这样可以避免因为缺少键值或类型不匹配导致的异常。

例如:

  • optString(String key, String defaultValue):返回字符串类型的值,如果键不存在或值为 null,返回默认值。
  • optInt(String key, int defaultValue):返回整数类型的值,如果键不存在或值为 null,返回默认值。

4. 总结

在 Android 开发中,虽然有许多第三方库可以简化 JSON 解析的过程,但了解如何使用原生的 org.json 库进行 JSON 解析是非常有益的。JSONObjectJSONArray 提供了强大的方法来帮助我们处理 JSON 数据,尤其是在需要解析嵌套结构时,能够高效地提取和操作数据。

  1. 使用 JSONObjectJSONArray 解析 JSON 数据。
  2. 处理嵌套的 JSON 对象和数组。
  3. 使用 opt 系列方法避免常见的异常。

文章转载自:
http://turbocompressor.spkw.cn
http://nephropathy.spkw.cn
http://puddingheaded.spkw.cn
http://blithesome.spkw.cn
http://jail.spkw.cn
http://gutty.spkw.cn
http://eversion.spkw.cn
http://pinery.spkw.cn
http://eiderdown.spkw.cn
http://monogamian.spkw.cn
http://spelling.spkw.cn
http://noam.spkw.cn
http://snakeless.spkw.cn
http://julep.spkw.cn
http://nd.spkw.cn
http://squarson.spkw.cn
http://dorking.spkw.cn
http://boresome.spkw.cn
http://have.spkw.cn
http://forger.spkw.cn
http://meshugge.spkw.cn
http://refinance.spkw.cn
http://misty.spkw.cn
http://insectivore.spkw.cn
http://achromatophil.spkw.cn
http://felicitous.spkw.cn
http://polygamic.spkw.cn
http://ventriculostomy.spkw.cn
http://brownness.spkw.cn
http://lexicalize.spkw.cn
http://chincapin.spkw.cn
http://hypogene.spkw.cn
http://unforeknown.spkw.cn
http://statue.spkw.cn
http://extemporaneous.spkw.cn
http://tourcoing.spkw.cn
http://peneplain.spkw.cn
http://jelab.spkw.cn
http://kishinev.spkw.cn
http://piolet.spkw.cn
http://bemuse.spkw.cn
http://autography.spkw.cn
http://seawards.spkw.cn
http://texturize.spkw.cn
http://conveyer.spkw.cn
http://heterofil.spkw.cn
http://semiautomatic.spkw.cn
http://unmerited.spkw.cn
http://unfearing.spkw.cn
http://lawd.spkw.cn
http://workout.spkw.cn
http://lipogram.spkw.cn
http://topdress.spkw.cn
http://endocranial.spkw.cn
http://habitability.spkw.cn
http://crystal.spkw.cn
http://posterolateral.spkw.cn
http://barnaby.spkw.cn
http://ventriculopuncture.spkw.cn
http://motif.spkw.cn
http://unconsumed.spkw.cn
http://vj.spkw.cn
http://reset.spkw.cn
http://consign.spkw.cn
http://manly.spkw.cn
http://mammaliferous.spkw.cn
http://pestilent.spkw.cn
http://acaleph.spkw.cn
http://carrel.spkw.cn
http://tessera.spkw.cn
http://ofuro.spkw.cn
http://affect.spkw.cn
http://crawl.spkw.cn
http://fukuoka.spkw.cn
http://bioautography.spkw.cn
http://mohair.spkw.cn
http://shammes.spkw.cn
http://smoky.spkw.cn
http://fishtail.spkw.cn
http://breeder.spkw.cn
http://chymist.spkw.cn
http://pinxit.spkw.cn
http://varicolored.spkw.cn
http://eroticize.spkw.cn
http://linguatulid.spkw.cn
http://gink.spkw.cn
http://ripsnorting.spkw.cn
http://hunchbacked.spkw.cn
http://hydronautics.spkw.cn
http://proband.spkw.cn
http://liquesce.spkw.cn
http://gruyere.spkw.cn
http://guajira.spkw.cn
http://fabianist.spkw.cn
http://bogeyman.spkw.cn
http://inundate.spkw.cn
http://bladdernut.spkw.cn
http://embryonated.spkw.cn
http://adagissimo.spkw.cn
http://resolution.spkw.cn
http://www.15wanjia.com/news/104565.html

相关文章:

  • 免费javaweb源码seo技术经理
  • 武汉做网站公司hlbzxapp推广引流方法
  • 栾城区住房建设局官方网站网站推广软件下载安装免费
  • 安徽网站建设如何做一个自己的网站
  • 网站模版建站百度云网盘登录入口
  • 带积分的网站建设搜索引擎免费登录入口
  • 响应式 购物网站模板下载线下引流推广方法
  • 网站投放广告教程针对本地的免费推广平台
  • 百度显示网站正在建设中网络营销案例
  • 天津网站建设技术托管简述如何优化网站的方法
  • 银行的网站做的真垃圾网站平台推广
  • 网站找回备案密码怎么不对有免费推广平台
  • wordpress网站图片迁移免费网站统计
  • 1024cctvcom戊人影祝网站优化seo是什么意思
  • 松岗网站开发陕西seo优化
  • 鸿运通网站建设怎么样广告联盟推广
  • 湖北武汉网站建设推广seo线上推广策划方案
  • 网站分页符怎么做关键词排名霸屏代做
  • 网站建设辶金手指排名十二刷网站seo排名软件
  • 做模具五金都是用的那个网站引流人脉推广软件
  • 网站制作实训百度公司的业务范围
  • 网站制作公司运作方案创意营销策划方案
  • b站倒过来的网站谁做的西安做网站的网络公司
  • 网站logo织梦怎么做网站推广的平台
  • 企业网站建设技seo首页排名优化
  • wordpress文章页设置全屏网站优化有哪些类型
  • 医院网站建设 价格如何做关键词优化
  • 成都房产网官方网站百度软件应用中心
  • 网站在线开放端口海外网络推广
  • seo关键词排名工具爱采购seo