【问题标题】:Create POJO Class for Kotlin为 Kotlin 创建 POJO 类
【发布时间】:2017-10-26 02:16:12
【问题描述】:

我想为 Kotlin 创建 POJO 类,因为我们知道 www.jsonschema2pojo.org 将 JSON 转换为 POJO,因此我们可以将它与 gson 一起使用。

有人知道如何快速地为 Kotlin 创建 Gson POJO?

已编辑:

我知道它的使用数据类,但是有没有最简单的方法来创建它?

【问题讨论】:

  • 在 Kotlin 中你写 data classes 而不是 POJO。
  • 如果您使用的是 Android Studio,我认为您可以创建 Java 类,然后将其转换为 Kotlin。

标签: java android gson kotlin pojo


【解决方案1】:
data class VideoGame(val name: String, val publisher: String, var reviewScore: Int)
//Constructor 
val game: VideoGame = VideoGame("Gears of War", "Epic Games", 8)

print(game.name) // "Gears of War"
print(game.publisher) // "Epic Games"
print(game.reviewScore) // 8
game.reviewScore = 7

【讨论】:

    【解决方案2】:

    关于自动生成数据类的 Kotlin 支持的功能请求已在 jsonschema2pojo github 存储库中填写 here。 目前,没有可用的 jsonschema2kotlin Web 实用程序。

    如果您在 Android Studio 上安装新插件没有任何问题,请按照接受的答案进行操作,否则您可以做的最好的事情是使用 jsonschema2pojo 将 JSON 转换为 Java POJO 并使用 Android Studio 3.0+将 Java 文件转换为 Kotlin 文件的功能。

    【讨论】:

    • 没有解释的反对票,干得好伙计们;)
    • 也许他们害怕revenge downvotes
    【解决方案3】:

    是的,我找到了解决方案

    例如:

    {
        "foo": "string",
        "bar": "integer",
        "baz": "boolean"
    }
    

    我的 POJO 类是使用 http://www.jsonschema2pojo.org/ 创建的

    Example.java

    public class Example {
    
        @SerializedName("foo")
        @Expose
        private String foo;
        @SerializedName("bar")
        @Expose
        private String bar;
        @SerializedName("baz")
        @Expose
        private String baz;
    
        public String getFoo() {
            return foo;
        }
    
        public void setFoo(String foo) {
            this.foo = foo;
        }
    
        public String getBar() {
            return bar;
        }
    
        public void setBar(String bar) {
            this.bar = bar;
        }
    
        public String getBaz() {
            return baz;
        }
    
        public void setBaz(String baz) {
            this.baz = baz;
        }
    }
    

    使用 Code -> Convert Java File to Kotlin FileCTRL + ALT + SHIFT + K

    转换的 Kotlin

    Example.kt

    class Example {
    
        @SerializedName("foo")
        @Expose
        var foo: String? = null
        @SerializedName("bar")
        @Expose
        var bar: String? = null
        @SerializedName("baz")
        @Expose
        var baz: String? = null
    }
    

    谢谢大家。

    【讨论】:

    • 你完全按照我在回答中描述的那样做,但我收到了反对票^^
    • 您可以使用json2kotlin.com直接从json生成kotlin数据类,而不需要在两者之间进行java转换。
    • kotlin 案例中的 getter 和 setter 呢?变量不能是私有的吗?请添加有关如何访问这些变量的注释(例如 bar)
    【解决方案4】:

    如果我有您的问题,您可能正在搜索一些用于转换为 POJO 的插件。所以 RoboPOJOGenerator 可以帮助你。您可以使用来自File>Setting>Plugin>Browse Repositories 的插件并搜索RoboPOJOGenerator。 要使用这个插件,首先需要创建一个单独的包,如“data”,右键单击该包,您将看到 Generate POJO from JSON。另外,您需要在gradle 中包含gson 库,因为此插件会自动生成gson 的注解,如@SerializedName 等。

    【讨论】:

      【解决方案5】:

      我认为这应该是你想要的插件

      https://github.com/wuseal/JsonToKotlinClass

      【讨论】:

      • 更新:很棒的插件,但是转换后工作室卡住了(a​​ndroid studio 2.3.3版)
      • @Amalp 是不是每次都会出现这种情况,我刚刚测试,一切正常,你能把你的JsonString贴在这里吗?或者你可以在这里提出一个细节问题,github.com/wuseal/JsonToKotlinClass/issues谢谢
      • @Amalp 感谢您的问题,新版本已修复此问题,您可以尝试使用新版本
      【解决方案6】:
      data class ModelUser(val imagePath: String,val userName: String)
      

      难以置信的权利!就这么简单。只需在 class 之前使用 data 关键字即可在 Kotlin 中创建 Data 类。

      Data 类为您提供一切,getter、setter、hashCode、toString 和 equals 函数。所以你所要做的就是创建一个实例并开始使用这些函数。

      【讨论】:

      • 数据类没有默认构造函数。
      • 某些 JSON 转换器要求类是可构造的,但前面的评论实际上是正确的:可以使用带默认参数的数据类
      【解决方案7】:

      试试这个

      这个方法很简单

      1. 右击包名,选择New->Kotlin File/Class
      2. 命名名称,在我的例子中,我将其命名为模型,你可以随心所欲,然后点击ok
      3. 并粘贴这段代码,这是你的 POJO/Model 类

        class Model {
            var uid: String? = null
            var name: String? = null
        }
        

      如何使用这个

       val model=Model()
       model.name="Sunil"
       Log.e("Model after",model.name)
      

      【讨论】:

        【解决方案8】:

        在 vs-code 中有一个名为 Paste JSON as Code 的插件。 它支持多种语言。 Paste Json as code

        【讨论】:

          【解决方案9】:

          使用 Android Studio 或 IntelliJ IDEA 插件: JSON 转 Kotlin 类​(JsonToKotlinClass)​

          【讨论】:

            【解决方案10】:

            在我的情况下,代码 -> 生成不起作用,它被禁用(见截图)

            你应该安装插件“JsonToKotlinClass”

            然后右键单击命名空间并选择

            在此处粘贴您的 JSON。就是这样,利润。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-08-08
              • 2019-06-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多