问题标签 [moshi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
632 浏览

kotlin - POJO字段声明,设置为init值或null

在我的 POJO 中,我通常会像这样声明字段

如果我这样声明,我将需要检查该字段是否为空。

但如果是这样:

我可以直接使用它。

使用哪个声明有关系吗?就像在内存、性能或其他方面的好习惯一样?

假设我有 100 个字段。然后我使用 Moshi 或 Gson 作为反序列化器。

0 投票
5 回答
13612 浏览

moshi - 如何通过 Moshi 将对象序列化为 Map

我想通过 Moshi 将对象序列化为 Map。这是我的 Gson 代码

以及如何由 Moshi 编写?

0 投票
1 回答
1387 浏览

android - 使用 Moshi 处理损坏的服务器响应

来自服务器的预期 json 响应应该是:

服务器返回 json 与此:

无论如何要处理这个损坏的 json 响应?在我从 Gson 切换之前,教师对象仍将被反序列化,只是它将为空。通过使用 Moshi,会抛出错误,我无法继续处理正确序列化的其他 json。

作者回复请参考链接

0 投票
1 回答
1927 浏览

android - Android Kotlin 中的 Moshi - ENUM 作为 MutableMap 键在反序列化时被转换为字符串

我有一个MutableMap<CryptoTypes, CurrentTradingInfo>我想保存的,onSaveInstanceState并且打算使用 Moshi 来回转换。 CryptoTypes is an ENUM

数据正在正确序列化,但是当它被反序列化时,它反而给了我一个MutableMap<String, CurrentTradingInfo>

当我在序列化之前在 studio 中查看我的tickerData 地图时,它显然将 ENUM 存储为 ENUM

在此处输入图像描述

这是反序列化后的地图[注意地图是无序的,我不得不再次重新运行它,因此地图键的顺序不同]

在此处输入图像描述

它如何能够给我一个错误输入的地图?难道我做错了什么?

当我尝试访问转换后的地图时,由于类型错误,它会因以下内容而崩溃

如果我创建两个变量

我不能去tickerDataA = tickerDataB,它显示为类型不匹配,不会让我按应有的方式编译。

0 投票
0 回答
1487 浏览

android - KotlinReflectionInternalError 数据类

尝试在改造服务中使用数据类作为结果类型时收到以下错误。

老实说,我什至不确定这个错误是什么意思,也没有找到很多关于它的资源。类描述相当模糊:

Kotlin 反射已达到无法恢复的不一致状态的信号。

唯一使用反射的地方是在 Moshi 内,但我不知道是什么导致了这个问题。


代码

这是数据类:

AuthenticationService:_

我使用 Moshi 作为 JSON 转换器,我已经KotlinJsonAdapterFactoryMoshi.Builder.


更新

通过尝试AuthenticationResponse直接使用 Moshi 创建适配器,我可以可靠地重现错误。

KotlinReflectionInternalError上面的代码在尝试创建adapter值时同样失败。

0 投票
3 回答
11161 浏览

json - Moshi 忽略 Kotlin 中的字段

我想知道在使用 Moshi 时如何忽略 Kotlin 类字段。

我找到了 Java 的这个答案(Moshi ignore field),这表明使用关键字 transient 如下

但是我找不到在 Kotlin 中完成这项工作的正确方法。

0 投票
1 回答
1107 浏览

json - 使用 moshi 反序列化 JSON API 响应

在对响应进行反序列化后,我得到了一个null对象属性。json在android下开发,我使用retrofit2moshi作为转换器(https://github.com/kamikat/moshi-jsonapi)。调试时,我看到json完全检索到响应(不是空属性),但反序列化失败。我应该GSON改用吗?

这是我用来json打电话的改造建造者:(没问题)

我的api json电话,响应包含 UserModel属性null(反序列化失败,没有任何错误)

我的UserModel(按照 moshi 的要求,但我认为它缺少一些东西):

json在调试 http 响应时看到的响应,我没有任何麻烦地检索,但是 moshi 很糟糕地反序列化它,并且没有引发错误:

0 投票
1 回答
97 浏览

java - TypeParameter 作为表达式参数

我想创建一个帮助类来帮助我将任何对象序列化为 json,反之亦然。我试图谷歌但没有任何相关。也许我不知道要搜索的正确术语是什么。这是我到目前为止所做的工作..

如果我想做的事情没有用,我是否必须在我的每一堂课上做toJson()和做?fromJson

0 投票
0 回答
545 浏览

java - moshi 如何访问私有字段?

我有以下模型类:

我正在使用以下代码解析 Json:

所以在这里我可以设置私有字段,即使它是私有的并且也没有设置器。

这怎么可能?moshi 如何设置私有字段?

0 投票
1 回答
394 浏览

java - 使用损坏的远程 API 解析 json

这是我的模型课

data class Article( val id: Int? = 0, val is_local: Boolean? = false, val comments: List<Comment?>? = listOf())

这是json

我正在使用此自定义适配器返回默认值以防解析错误,例如我的情况是is_local字段

并且我的测试失败并且布尔值不为假我已将上述适配器添加到 moshi

但是当我将模型类中 is_local 字段的数据类型更改为不可为空时,它可以工作