java - 用 Java 解析嵌套的 JSONArrays
问题描述
我有这个丑陋的 JSON 字符串,我需要得到totalStars
它,在这种情况下是 500。我已经尝试了很多解决方案,但似乎都没有。
这是JSON
:
{
"code": 200,
"message": "success",
"data": [
[
{
"totalPosts": 42
}
],
[
{
"totalStars": 500
}
],
[
{
"followingCount": 1
}
],
[
{
"followerCount": 1
}
]
]
}
目前,我正在尝试通过以下方式获取数据:
JSONObject jsonResult = new JSONObject(result);
JSONArray data = jsonResult.getJSONArray("data");
if(data != null) {
String[] names = new String[data.length()];
for(int i = 0 ; i < data.length() ; i++) {
names[i] = data.getString(i);
}
System.out.println(names);
}
数据包含正确的JSONArray
数据,但我似乎无法从中获取其他数据。
解决方案
看起来您的数据是一个对象数组,而不是字符串。你需要做这样的事情:
JSONObject jsonResult = new JSONObject(result);
JSONArray data = jsonResult.getJSONArray("data");
if(data != null) {
String[] names = new String[data.length()];
for(int i = 0 ; i < data.length() ; i++) {
JSONArray arr = data.getJSONArray(i);
dataObj = arr.getJSONObject(0)
Iterator<String> keys = dataObj.keys();
names[i] = dataObj.getString(keys.next())
}
System.out.println(names);
}
我可能在这个答案中有一些语法问题,但主要思想是你在处理对象数组时试图获取一个字符串(每个数据索引都是一个对象数组。恰好是这样每个这样的数组中只有一个对象)
推荐阅读
- video - 视频未出现在 Aframe 中
- c# - 无法从 IUserPeopleCollectionPage 类型 Dataa MS Graph API 中找到部门名称
- python - 删除 JSON/Python 中 twitters extended_tweet 列的不必要细节
- algorithm - 如何找到 k 个最小边界矩形来包围所有给定点?
- jquery - 如何使用 jquery 将剪贴板数据粘贴到表格单元格中?
- c - 需要既为字符串的创建分配内存,又将该字符串输入到字符指针数组的函数
- java - 使用 html 上传视频
- c# - 如何设计单元测试以创建用户可以设置许多值的对象?
- sql - 从连续发生中确定最小日期
- python - 下划线和字符串的 Python 正则表达式匹配