问题标签 [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 投票
3 回答
2128 浏览

android - 用改造和 moshi 填充微调器

我是android dev(java或kotlin)的初学者。我正在尝试使用改造和 moshi 从 json 填充微调器,但我不知道如何将它填充到微调器中。老实说,我不知道 Json 数据的返回是否正确,因为 Log.d() 的返回不像 dump() laravel 或 php 那样详细。

活动 onCreate 中的脚本(请阅读脚本的注释,我将调试结果放在Log.d()那里):

RestApi.kt

ApiModel.kt

老虎API.kt

返回 Json:https ://jsoneditoronline.org/?id=ce90c41b859218e746e41d64eddb4c30

所以我的问题是:

  1. 是否有任何功能可以像 laravel 一样详细调试对象/数组?
  2. 如何将我的 json 返回数据填充到微调器中?
0 投票
2 回答
987 浏览

android - Moshi:需要一个类、ParameterizedType 或 GenericArrayType,但是是 null 类型

我有这个模型:

我期望这些模型的列表。

示例 JSON:

然后我在反序列化过程中收到此错误:

我需要将字段属性作为地图。里面的数据可以是任何类型和任何值

0 投票
1 回答
6013 浏览

android - 使用 moshi 转换 HashMap

我正在尝试将 a HashMapof 元素转换为 JSON 字符串。我正在使用此链接中使用的方法。

但这给出了以下错误

错误:(236、40)类型推断失败:没有足够的信息来推断有趣适配器中的参数 T(p0:类型!):JsonAdapter!请明确指定。

谁能告诉我错在哪里?是因为 Kotlin 吗?

0 投票
1 回答
6145 浏览

android - SerializedName 注释似乎在 Moshi 中不起作用

所以我正在尝试使用 Moshi 解析来自我的服务器的调用。这是我的响应对象。

这是我的端点定义(不是很重要,但无论如何我都会包含它)

这是我用来调用的代码。

在 onResponse 方法中,我的 response.body() 总是有 accessToken,发出并过期为 null。我得到了其他参数的值。使用 Android Profiler,我确定它会将其作为响应返回。

那么我做错了什么?为什么 SerializedName 不起作用?

0 投票
0 回答
384 浏览

json - 如何让 Moshi 处理复杂的嵌套数据?

假设我有一些 JSON 数据进来,我最终想用这样的代码表示:

但是进来的JSON更像是这样的:

换句话说,您需要将自定义适配器用于:

  1. Child.id在解析每个孩子时正确组合。
  2. child.parentId在解析父级时向每个子级添加。

ChildAdapter写一个可以结合idPrefix和的很简单idNum。但是一旦你到了第二层嵌套,我不知道该怎么办;我不想将整个事情解析为一大块数据,然后手动处理。有没有更好的方法来处理这个问题(可能嵌套超过 2 个级别)?

此外,这有望在两个方向上起作用 - 即两者fromJson()以及toJson().

0 投票
1 回答
2484 浏览

android - 未调用 Moshi 自定义适配器

TL;博士:

我的问题是:

1 - 我怎样才能Adapter"timestamp": 1515375392.225to做一个ZonedDateTime

2-根据文档,如果我需要 moshi 对象来获取此适配器,如何List<Report>moshi对象中注册适配器?Builder


我的 JSON 字符串具有以下结构:

是由 进行的timestamp自动转换Jackson JavaTimeModule,它以十进制数的形式将 a 转换ZonedDateTime为 a ,表示 a和a 。timestamp StringsecondsnanosecondsInstant

为了解析 JSON timestamp String,我制作了以下Moshi适配器:

然后我将此适配器注册为:

问题是,当我使用 调用我的网络服务时Retrofit,我得到以下信息Exception

com.squareup.moshi.JsonDataException:java.lang.NumberFormatException:对于输入字符串:“.067000000”在 $[0].timestamp

(请记住,这里的纳秒 .067000000 与我之前给出的 JSON 示例不同,因为它们在不同时间调用 Web 服务)。

我试图在我的 上放置一个断点ZonedDateTimeAdapter,但它从未被调用过。但它影响了 Moshi,因为如果我将它从 中删除Moshi.Builder,错误将变为:

原因:java.lang.IllegalArgumentException:无法序列化抽象类 org.threeten.bp.ZoneId

我还尝试更改ZonedDateTimeAdapter要处理Double而不是String,但它只是将错误消息更改为:

com.squareup.moshi.JsonDataException:java.lang.NumberFormatException:对于输入字符串:“.515376840747E9”在 $[0].timestamp

所以,基本上,我有一堆不断变化的错误消息,不知道我做错了什么。我遵循了 Moshi 文档Custom Adapters,但我不知道还能做什么。

0 投票
1 回答
765 浏览

android - 将 moshi 连接到 Android Studio (Kotlin)

我在 Android Studio 中使用 Kotlin。我无法在连接了 moshi 库的情况下编译项目。https://github.com/square/moshi

告诉我,我做错了什么??我可以在控制台中看到:


顶级 build.gradle


应用程序\build.gradle

https://github.com/LevWi/modbuster-blt/blob/Signals/app/build.gradle


proguard-rules.pro

0 投票
0 回答
829 浏览

json - Moshi 自定义 JsonAdapter

我正在尝试JsonAdapter为我的 JSON 数据创建一个自定义,以绕过特定字段的序列化。以下是我的示例 JSON:

上面的 JSON 字段data有动态键号,所以我想绕过这个数据字段值并返回JSONObject

我正在使用RxAndroid,Retrofit2Observables. 我创建了一个服务类:

我正在使用 observable 调用此服务,如下所示:

然后我像这样运行它:

我的 Pojo 课程如下所示:

问题是它会data以这种格式返回一个值:

解析为无效JSONObject

我搜索了很多,也检查了一些Moshi示例食谱,但我不知道如何绕过这个特定字段并返回有效的 JSONObject,因为我是这个Moshi库的新手。

0 投票
2 回答
559 浏览

android - 如何在 Moshi 中使用 RealmObject

我有一个名为 User 的自定义对象,它是一个 RealmObject。这个对象也有 Moshi 的注释,因为我计划在改造调用中使用这个对象。

当我为这样的用户查询我的 Realm DB 时:

我得到这个响应(使用调试):

领域对象

可以看出,对象未初始化,但值显示在第一行。

这里有什么问题?

当我将上述对象作为@Body 参数传递时,它似乎是空的。

我还通过 Fiddler 进行了检查,发送到服务器的请求包含一个空对象。

问题:如何让这个对象获得正确的值?

0 投票
1 回答
3239 浏览

android - 如何在不定义类的情况下使用 moshi 创建复杂的 json?

在 gson 中,我可以使用 JsonElement 来格式化复杂的 json,类似于(在 kotlin 中):

我知道我可以在 moshi 中使用 JsonWriter 来做到这一点。但是有没有一种简单的方法可以做到这一点?