处理一个有时为布尔值且有时为int的字段

编程入门 行业动态 更新时间:2024-10-27 10:20:45
本文介绍了处理一个有时为布尔值且有时为int的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用reddit JSON API.有一些帖子数据对象包含一个称为edited的字段,如果该帖子尚未被编辑,则可能为布尔值false;如果该帖子已被编辑,则可能为timestamp int.

I'm trying to work with the reddit JSON API. There are post data objects that contain a field called edited which may contain a boolean false if the post hasn't been edited, or a timestamp int if the post was edited.

有时是布尔值:

{ "edited": false, "title": "Title 1" }

{ "edited": false, "title": "Title 1" }

有时是一个int: { "edited": 1234567890, "title": "Title 2" }

Sometimes an int: { "edited": 1234567890, "title": "Title 2" }

当尝试解析POJO将字段设置为int的JSON时,出现错误:JsonDataException:期望为int但为BOOLEAN ...

When trying to parse the JSON where the POJO has the field set to int, I get an error: JsonDataException: Expected an int but was BOOLEAN...

我如何使用Moshi处理此问题?

How can I deal with this using Moshi?

推荐答案

我也遇到了类似的问题,即我的字段有时是布尔值,有时是整数.我希望他们永远是整数.这是我用Moshi和Kotlin解决的方法:

I also ran into a similar problem where I had fields that were sometimes booleans, and sometimes ints. I wanted them to always be ints. Here's how I solved it with Moshi and kotlin:

  • 制作新的注释,以将其用于将字段从boolean转换为int的
  • @JsonQualifier @Retention(AnnotationRetention.RUNTIME) @Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FUNCTION) annotation class ForceToInt internal class ForceToIntJsonAdapter { @ToJson fun toJson(@ForceToInt i: Int): Int { return i } @FromJson @ForceToInt fun fromJson(reader: JsonReader): Int { return when (reader.peek()) { JsonReader.Token.NUMBER -> reader.nextInt() JsonReader.Token.BOOLEAN -> if (reader.nextBoolean()) 1 else 0 else -> { reader.skipValue() // or throw 0 } } } }

  • 在您要强制进行int的字段上使用此注释:
  • @JsonClass(generateAdapter = true) data class Discovery( @Json(name = "id") val id: String = -1, @ForceToInt @Json(name = "thanked") val thanked: Int = 0 )

    更多推荐

    处理一个有时为布尔值且有时为int的字段

    本文发布于:2023-11-05 15:42:30,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1561233.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:字段   布尔值   int

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!