android - 在 Android 中解析 JSON 数据的最佳方式是什么?

标签 android json parsing gson

我有 JSON 数据要解析。结构不固定,有时以单个字符串形式出现,有时以数组形式出现。

目前,我们正在使用 GSON 库来解析 JSON,但当它作为数组出现时会遇到问题。

例如:

1.  {"msg":"data","c":300,"stat":"k"}


2. {
    "msg": [
        " {\"id\":2,\"to\":\"83662\",\"from\":\"199878\",\"msg\":\"llll\",\"c\":200,\"ts\":1394536776}"
     ],
     "c": 200,
     "stat": "k",
     "_ts": 1394536776
 }

在上面的示例中,有时我将 msg 作为字符串获取,有时作为数组获取。

谁能帮帮我?如果我决定使用 JSON 解析,那将非常乏味,因为我有大约 20 多个 API 需要解析,并且每个 API 至少包含 50 个字段。

最佳答案

您可以使用 JSONObjectJSONArray类而不是 GSON 来处理 JSON 数据

第一个例子

String jsonStr = "{\"msg\":\"data\",\"c\":300,\"stat\":\"k\"}";

JSONObject jsonObj = new JSONObject(jsonStr);

String msg = jsonObj.getString("msg");
Integer c = jsonObj.getInteger("c");
String stat = jsonObj.getString("stat");

对于第二个例子

   String jsonStr = ... // "your JSON data";

   JSONObject jsonObj = new JSONObject(jsonStr);

   JSONArray jsonArr = jsonObj.getJSONArray("msg");

   JSONObject arrItem = jsonArr.getJSONObject(0);

   //and so on

JSONObject 类还有方法 opString、opArray,如果您尝试获取的数据不存在或类型错误,它们不会抛出异常

例如

JSONArray arr = jsonObj.optJSONArray("msg");
JSONObject msg = null;
if (arr != null) {
    msg = arr.getJSONObject(0)
} else {
   msg = jsonObj.getJSONObject("msg");
}

关于android - 在 Android 中解析 JSON 数据的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22326169/

相关文章:

python - 如何在 Python 中解析此 XML 响应?

android - LinearLayout权重选择

android - 如何在android中为库项目创建测试项目

jakarta-ee - 如何在 Java EE 7 的 JAX-RS 层中获取 Java 对象的 JSON 表示?

c# - 将带有数组的 JSON 反序列化为 DataTable?

html - 在Xcode中解析XML文件时删除HTML标记

android - 检测导航组件中的弹出

android - android Q beta中的文件操作

javascript - AngularJS 发布请求未捕获从 PHP 返回的 JSON 数据

Python3 - 从 json 解析 AWS 实例标签。经历古怪的行为