鸿蒙Next开发中http请求返回的属性key含有横线如何处理

在鸿蒙Next开发中,使用http请求返回的JSON数据时,如果属性key包含横线(如"user-name"),应该如何正确解析?尝试用@SerializedName注解转换,但似乎不生效,是否有其他解决方案?

2 回复

鸿蒙Next里遇到带横线的JSON键?直接上@SerializedName注解!比如user-name,在字段上加@SerializedName("user-name"),让Gson乖乖听话。简单粗暴,专治各种不服的键名!

更多关于鸿蒙Next开发中http请求返回的属性key含有横线如何处理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next开发中,当HTTP请求返回的JSON数据包含带横线(如user-name)的属性key时,可以通过以下方式处理:

1. 使用@JSONField注解(推荐)

在数据类中,使用@JSONField注解映射JSON字段名:

// 导入注解
import ohos.data.orm.annotation.JSONField;

public class User {
    @JSONField(name = "user-name")
    private String userName;

    // Getter/Setter
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

2. 使用Gson的@SerializedName注解

如果使用Gson库:

import com.google.gson.annotations.SerializedName;

public class User {
    @SerializedName("user-name")
    private String userName;

    // Getter/Setter...
}

3. 手动解析JSON

直接操作JSONObject处理特殊字段名:

// 示例:使用鸿蒙的JsonUtil
String jsonData = "{\"user-name\":\"张三\"}";
JsonObject jsonObject = JsonUtil.parse(jsonData).getAsJsonObject();
String userName = jsonObject.get("user-name").getAsString();

注意事项:

  • 确保HTTP客户端库(如HttpClient)已正确配置
  • 测试时注意横线可能引发的序列化/反序列化异常
  • 建议保持数据模型字段使用驼峰命名,仅通过注解关联JSON字段

选择方案时,优先推荐使用@JSONField注解,与鸿蒙开发框架兼容性最佳。

回到顶部