如何访问MusicBrainz API返回JSON中带中划线的键如status-id、track-count
带中划线的JSON键取值方案
JSON本身完全支持键名包含中划线,无法直接取值的核心原因是绝大多数编程语言的标识符不允许使用中划线,因此不能用默认的点语法直接访问这类属性,统一使用字符串键名+方括号访问的方式即可,不同编程语言的具体写法如下:
- JavaScript/TypeScript
// 假设接口返回的JSON数据已解析为data对象 const statusId = data['status-id'] const trackCount = data['track-count'] // 嵌套结构示例 const firstTrackCount = data['releases'][0]['track-count']
- Python
# 假设接口返回的JSON数据已解析为data字典 status_id = data['status-id'] track_count = data['track-count'] # 嵌套结构示例 first_track_count = data['releases'][0]['track-count']
- Java(Jackson/Gson等序列化框架)
直接通过JsonNode访问:
JsonNode data = new ObjectMapper().readTree(responseBody); String statusId = data.get("status-id").asText(); int trackCount = data.get("track-count").asInt();
映射为实体类时通过注解指定实际键名:
public class MusicRelease { @JsonProperty("status-id") private String statusId; @JsonProperty("track-count") private Integer trackCount; // 省略getter、setter方法 }
- Go
通过结构体标签指定JSON键名即可:
type MusicRelease struct { StatusId string `json:"status-id"` TrackCount int `json:"track-count"` }
内容的提问来源于stack exchange,提问作者JustMyThoughts -
相关产品推荐
相关产品推荐

