java - 当我尝试从中提取时,为什么我的 JsonParser 返回一个空值?
问题描述
使用 GSON,我试图从一段 JSON 中提取元素,但无论我试图得到什么值,它们都返回 null,我不知道为什么。我有这段 JSON:
{
"albums":{
"href":"https://api.spotify.com/v1/browse/new-releases?offset=0&limit=20",
"items":[
{
"album_type":"album",
"artists":[
{
"external_urls":{
"spotify":"https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
},
"href":"https://api.spotify.com/v1/artists/06HL4z0CvFAxyc27GXpf02",
"id":"06HL4z0CvFAxyc27GXpf02",
"name":"Taylor Swift",
"type":"artist",
"uri":"spotify:artist:06HL4z0CvFAxyc27GXpf02"
}
],
"available_markets" : [ "AD", "AE", "AL", "AR", "AT", "AU", "BA", "BE", "BG", "BH", "BO", "BR", "BY", "CA", "CH", "CL", "CO", "CR", "CY", "CZ", "DE", "DK", "DO", "DZ", "EC", "EE", "EG", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HR", "HU", "ID", "IE", "IL", "IN", "IS", "IT", "JO", "JP", "KW", "KZ", "LB", "LI", "LT", "LU", "LV", "MA", "MC", "MD", "ME", "MK", "MT", "MX", "MY", "NI", "NL", "NO", "NZ", "OM", "PA", "PE", "PH", "PL", "PS", "PT", "PY", "QA", "RO", "RS", "RU", "SA", "SE", "SG", "SI", "SK", "SV", "TH", "TN", "TR", "TW", "UA", "US", "UY", "VN", "XK", "ZA" ],
"external_urls":{
"spotify":"https://open.spotify.com/album/2fenSS68JI1h4Fo296JfGr"
},
"href":"https://api.spotify.com/v1/albums/2fenSS68JI1h4Fo296JfGr",
"id":"2fenSS68JI1h4Fo296JfGr",
"images":[
{
"height":640,
"url":"https://i.scdn.co/image/ab67616d0000b27395f754318336a07e85ec59bc",
"width":640
},
{
"height":300,
"url":"https://i.scdn.co/image/ab67616d00001e0295f754318336a07e85ec59bc",
"width":300
},
{
"height":64,
"url":"https://i.scdn.co/image/ab67616d0000485195f754318336a07e85ec59bc",
"width":64
}
],
"name":"folklore",
"release_date":"2020-07-24",
"release_date_precision":"day",
"total_tracks":16,
"type":"album",
"uri":"spotify:album:2fenSS68JI1h4Fo296JfGr"
}
]
}
}
我试图深入了解我要提取的特定元素,例如“名称”,但这没有用,所以我调查了原因,它说 jsonArray 为空。我已经尝试提取任何东西,无论我尝试提取什么,它都显示为空。怎么了?
(PS如果我违反了一些发布规则或其他东西,我很抱歉,新手在这里)
public void parseJsonForInfo(String json) {
JsonObject jo = JsonParser.parseString(json).getAsJsonObject();
System.out.println(jo);
JsonArray jsonArray = jo.getAsJsonArray("items");
System.out.println(jsonArray); //prints null
}
解决方案
如果您需要选择items
您需要先使用 JSON 对象获取专辑,然后您可以使用 JSON 数组获取项目。这是示例
public void parseJsonForInfo(String json) {
JsonObject jo = JsonParser.parseString(json).getAsJsonObject();
JsonObject albums = jo.getAsJsonObject("albums");
JsonArray jsonArray = albums.getAsJsonArray("items");
System.out.println(jsonArray); //prints null
}
之后,您将获得所需的items
.
推荐阅读
- javascript - 在数组中查找和替换匹配的对象 - JavaScript
- r - 如何更正包裹(邮政编码)随附的数据框中的值并使其保持不变?
- perl - 在这个 perl 代码中 -> 意味着什么?
- javascript - groupBy/根据元素和类别的顺序减少一个数组
- c# - 将动态 Formflow 值传递回 Luis
- azure-language-understanding - 处理 LUIS 中的动词时态
- vim - 为什么我安装的插件 'gruvbox' 不显示?
- amazon-web-services - AWS SNS 编辑主题策略 - C#
- android - 在指定时间后清除 SharedPreference 数据
- c# - 将翻译转换应用于图像 C#