我有 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 个字段。
最佳答案
您可以使用 JSONObject和 JSONArray类而不是 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/