【问题标题】:How to create necessary pojo classes to send nested json data如何创建必要的 pojo 类来发送嵌套的 json 数据
【发布时间】:2020-10-11 03:38:36
【问题描述】:

我需要从 android 应用程序发送以下 json 请求。我正在使用改造 2. 如何创建一个 pojo 类来发送这种 json 请求?

{
    "json_data": {
        "firstname": "fname",
        "lastname": "lname",
        "email": "test@gmail.com",
        "telephone": "0123456789",
        "salutation": "Mr.",
        "dob": "1997/08/15",
        "password":"123456"
    }
}

【问题讨论】:

    标签: android json android-studio retrofit


    【解决方案1】:

    我希望你问的是如何从 JSON 制作 POJO

    您可以在https://codebeautify.org/json-to-java-converter 尝试使用 JSON 到 Java 转换器 只需粘贴您的 JSON 模板并点击转换,您将拥有包含所有 getter 和 setter 的 POJO 类。

    您还可以使用一个内置插件。 试试这个https://plugins.jetbrains.com/plugin/8533-json2pojo

    【讨论】:

    • 不过要小心,因为这些自动创建者通过值假定字段的类型,在示例 JSON 中给出。你的应该没问题,但如果你有例如一个“数字”:42 字段,它会假定一个整数字段,尽管在不同的响应中,数字可能是一个浮点数。
    • 是的,我们必须调整一些东西,比如类名和嵌套的 JSON 数组将是另一个内部类。 Code Beautify 会将所有 Number 值转换为 float 类型以避免类型转换问题,即使实际类型是 int 或 double,运行它们也不会出现问题,但我们必须处理它们。这个工具对样板代码很方便。
    • 如果你想要一个内置插件,试试这个plugins.jetbrains.com/plugin/8533-json2pojo
    【解决方案2】:
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Example {
    
        @SerializedName("json_data")
        @Expose
        private JsonData jsonData;
    
        public JsonData getJsonData() {
            return jsonData;
        }
    
        public void setJsonData(JsonData jsonData) {
            this.jsonData = jsonData;
        }
    
    }
    

    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class JsonData {
    
        @SerializedName("firstname")
        @Expose
        private String firstname;
        @SerializedName("lastname")
        @Expose
        private String lastname;
        @SerializedName("email")
        @Expose
        private String email;
        @SerializedName("telephone")
        @Expose
        private String telephone;
        @SerializedName("salutation")
        @Expose
        private String salutation;
        @SerializedName("dob")
        @Expose
        private String dob;
        @SerializedName("password")
        @Expose
        private String password;
    
        public String getFirstname() {
            return firstname;
        }
    
        public void setFirstname(String firstname) {
            this.firstname = firstname;
        }
    
        public String getLastname() {
            return lastname;
        }
    
        public void setLastname(String lastname) {
            this.lastname = lastname;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getTelephone() {
            return telephone;
        }
    
        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }
    
        public String getSalutation() {
            return salutation;
        }
    
        public void setSalutation(String salutation) {
            this.salutation = salutation;
        }
    
        public String getDob() {
            return dob;
        }
    
        public void setDob(String dob) {
            this.dob = dob;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
    }
    

    this site create these for you

    【讨论】:

      【解决方案3】:

      尝试使用内置插件将 json 转换为这样的 POJO 类

      1. 进入安卓工作室设置

      2. 转到插件部分

      3. 为java安装这个插件

      1. 为 kotlin 安装这个插件

      1. 复制json

      2. 单击要在其中创建类的包

      3. 点击新建然后像这样选择json到POJO

      【讨论】:

      • 我使用的是 java,而不是 kotlin。 java有什么插件吗?
      【解决方案4】:

      使用下面的方式,你左边的字段应该是POJO中的变量名。

      Java:

      class Data {
         public String firstname;
         public String lastname;
         public String email;
         public String telephonies;
         public String salutation;
         public String dob;
         public String password;
      }
      
      class Request{
           Data json_data;
      }
      

      【讨论】:

        猜你喜欢
        • 2016-09-09
        • 2016-08-28
        • 1970-01-01
        • 2020-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-27
        相关资源
        最近更新 更多