如何映射含斜杠字段名的JSON对象?Java新手技术问询
解决JSON字段含斜杠的映射问题
针对你遇到的带斜杠的JSON字段映射问题,这里提供两种适合你的解决方案:
方案一:用Gson注解映射到实体类
Gson提供了@SerializedName注解,可以把JSON里的特殊字段名映射成合法的Java变量名,这样你依然可以用实体类来接收数据:
首先定义对应实体类:
import com.google.gson.annotations.SerializedName; public class ApiResponseItem { private Success success; public Success getSuccess() { return success; } public void setSuccess(Success success) { this.success = success; } public static class Success { // 用注解指定对应JSON里的斜杠字段 @SerializedName("/config/linkbutton") private boolean linkButtonEnabled; public boolean isLinkButtonEnabled() { return linkButtonEnabled; } public void setLinkButtonEnabled(boolean linkButtonEnabled) { this.linkButtonEnabled = linkButtonEnabled; } } }
然后解析JSON:
String jsonString = "[{\"success\":{\"/config/linkbutton\":true}}]"; Gson gson = new Gson(); ApiResponseItem[] responseArray = gson.fromJson(jsonString, ApiResponseItem[].class); // 获取目标值 boolean linkButtonStatus = responseArray[0].getSuccess().isLinkButtonEnabled();
方案二:直接解析JSON树(无需实体类)
如果不想创建实体类,你可以直接用Gson的JsonArray和JsonObject来解析JSON结构,直接提取需要的值:
String jsonString = "[{\"success\":{\"/config/linkbutton\":true}}]"; Gson gson = new Gson(); // 解析成JSON数组 JsonArray jsonArray = gson.fromJson(jsonString, JsonArray.class); // 获取数组第一个元素 JsonObject firstObj = jsonArray.get(0).getAsJsonObject(); // 取出success对象 JsonObject successObj = firstObj.getAsJsonObject("success"); // 直接通过带斜杠的键名获取值 boolean linkButtonStatus = successObj.get("/config/linkbutton").getAsBoolean();
额外补充(可选)
如果你以后考虑用Jackson处理JSON,思路类似,用@JsonProperty注解代替@SerializedName即可,实体类写法逻辑一致。
内容的提问来源于stack exchange,提问作者Enc
相关产品推荐
相关产品推荐

