【问题标题】:How to read the JSON line and make it into a Java/Kotlin code [closed]如何读取 JSON 行并将其转换为 Java/Kotlin 代码 [关闭]
【发布时间】:2021-12-02 15:31:10
【问题描述】:

我正在做一个项目来使用Retrofit获取API,为了从网站获取数据,我必须了解JSON中存储了一些数据到多个数据中,例如:

launches [{
   id*  string
   provider string
}]

我想从 JSON 代码中将其转换为小型项目的 Java/Kotlin 代码,如果有人可以向我解释或在 Java/Kotlin 代码中向我展示如何制作 setter此代码上的 /getter 序列。感谢您的宝贵时间。

这是完整的 JSON 格式示例:

Article{
    id integer
    featured boolean
    default: false
    title   string
    url string
    imageUrl string
    newsSite string
    summary string
    publishedAt string
    launches [{
        id* string
        provider string
    }]
    events [{
        id* string
        provider string
    }]
}

这个其实是json:

{
"employee":{"name":"John", "age":30, "city":"New York"}
}

【问题讨论】:

  • 请分享您的 json。
  • @Poran 我分享了完整的 json 格式。
  • 我不确定你有什么。它既不是 JSON 也不是 JSON Schema。这是哪里来的?
  • @stdunbar api.spaceflightnewsapi.net/v3/documentation# 来自此链接,是的架构。
  • 不,那是 Swagger 的“模式”。它不是 JSON。请参阅this post 了解更多信息。

标签: java android kotlin


【解决方案1】:

您正在寻找的是 JSON Parsing LibrariesJSON Converters 用于改造。

您会看到 Retrofit 没有内置的 JSON 转换器来将 JSON 字符串解析为 Java 或 Kotlin 对象。相反,Retrofit 支持 MoshiJacksonGSON 等。

像 Moshi 这样的转换器是 JSON 解析器,可将 JSON 字符串 转换为 Kotlin 对象,反之亦然。

这些转换器在Retrofit.Builder 上指定。您还需要将转换器的依赖项与 Retrofit 的依赖项一起添加到您的项目中。

/*using MoshiBuilder to create MoshiObject i.e. the
JSON-String-to-Kotlin-Object converter*/

/*For Moshi's annotations to work properly with Kotlin
add the KotlinJsonAdapterFactory*/

private val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()


//using Retrofit Builder to create Retrofit Object
private val retrofit = Retrofit.Builder()
    .addConverterFactory(MoshiConverterFactory.create(moshi)) //handles JSON
    .baseUrl(BASE_URL)
    .build()

有一个名为 JsonToKotlinClass 的插件,您可以使用它从 REST API 复制 JSON 字符串并将其粘贴到插件上,从而为您生成 Kotlin 对象。

我建议您观看有关如何处理整个事情的视频课程。对于Example watch this course

【讨论】:

    【解决方案2】:

    Java 和 Kotlin 可以使用 Google 的 GSON 库,该库可让您在普通旧 Java 对象 (POJO) 与 JSON 字符串之间进行转换。此外,正如有人指出的那样,您发布的内容看起来像是 JSON 模式的错误语法。请确保它符合架构。首先,在您的 pom.xml 中添加 GSON 依赖项(或在 Kotlin 中的等效项,如果不同。抱歉,我是一名 Java 程序员)。

    依赖:

    <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
    </dependency>
    

    这就是您可以使用 GSON 的方式 -

    1. 在 Java/Kotlin 中创建一个 Article 类。这个类将是你创建对象的蓝图。

    2. 在您拥有 JSON 字符串的类中实例化一个 GSON 对象。

    Gson gson = new Gson();
    
    1. 实例化一个新对象并使用 GSON 将 JSON 字符串映射到 POJO。
    String exampleJson = "{"Article":{ "id":123, "featured": true, etc... }}";
    Article myArticleObj = gson.fromJson(exampleJson, Article.class);
    

    您可以使用 gson.toJson(Object) 反向转换为 JSON 字符串。

    就是这样!希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2013-06-28
      • 1970-01-01
      • 2020-04-27
      • 2010-10-13
      相关资源
      最近更新 更多