问题标签 [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.
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
所以我的问题是:
- 是否有任何功能可以像 laravel 一样详细调试对象/数组?
- 如何将我的 json 返回数据填充到微调器中?
android - Moshi:需要一个类、ParameterizedType 或 GenericArrayType,但是是 null 类型
我有这个模型:
我期望这些模型的列表。
示例 JSON:
然后我在反序列化过程中收到此错误:
我需要将字段属性作为地图。里面的数据可以是任何类型和任何值
android - 使用 moshi 转换 HashMap
我正在尝试将 a HashMap
of 元素转换为 JSON 字符串。我正在使用此链接中使用的方法。
但这给出了以下错误
错误:(236、40)类型推断失败:没有足够的信息来推断有趣适配器中的参数 T(p0:类型!):JsonAdapter!请明确指定。
谁能告诉我错在哪里?是因为 Kotlin 吗?
android - SerializedName 注释似乎在 Moshi 中不起作用
所以我正在尝试使用 Moshi 解析来自我的服务器的调用。这是我的响应对象。
这是我的端点定义(不是很重要,但无论如何我都会包含它)
这是我用来调用的代码。
在 onResponse 方法中,我的 response.body() 总是有 accessToken,发出并过期为 null。我得到了其他参数的值。使用 Android Profiler,我确定它会将其作为响应返回。
那么我做错了什么?为什么 SerializedName 不起作用?
json - 如何让 Moshi 处理复杂的嵌套数据?
假设我有一些 JSON 数据进来,我最终想用这样的代码表示:
但是进来的JSON更像是这样的:
换句话说,您需要将自定义适配器用于:
Child.id
在解析每个孩子时正确组合。child.parentId
在解析父级时向每个子级添加。
ChildAdapter
写一个可以结合idPrefix
和的很简单idNum
。但是一旦你到了第二层嵌套,我不知道该怎么办;我不想将整个事情解析为一大块数据,然后手动处理。有没有更好的方法来处理这个问题(可能嵌套超过 2 个级别)?
此外,这有望在两个方向上起作用 - 即两者fromJson()
以及toJson()
.
android - 未调用 Moshi 自定义适配器
TL;博士:
我的问题是:
1 - 我怎样才能Adapter
为"timestamp": 1515375392.225
to做一个ZonedDateTime
。
2-根据文档,如果我需要 moshi 对象来获取此适配器,如何List<Report>
在moshi
对象中注册适配器?Builder
我的 JSON 字符串具有以下结构:
是由 进行的timestamp
自动转换Jackson
JavaTimeModule
,它以十进制数的形式将 a 转换ZonedDateTime
为 a ,表示 a和a 。timestamp String
seconds
nanoseconds
Instant
为了解析 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
,但我不知道还能做什么。
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
json - Moshi 自定义 JsonAdapter
我正在尝试JsonAdapter
为我的 JSON 数据创建一个自定义,以绕过特定字段的序列化。以下是我的示例 JSON:
上面的 JSON 字段data
有动态键号,所以我想绕过这个数据字段值并返回JSONObject
。
我正在使用RxAndroid
,Retrofit2
与Observables
. 我创建了一个服务类:
我正在使用 observable 调用此服务,如下所示:
然后我像这样运行它:
我的 Pojo 课程如下所示:
问题是它会data
以这种格式返回一个值:
解析为无效JSONObject
。
我搜索了很多,也检查了一些Moshi
示例食谱,但我不知道如何绕过这个特定字段并返回有效的 JSONObject,因为我是这个Moshi
库的新手。
android - 如何在不定义类的情况下使用 moshi 创建复杂的 json?
在 gson 中,我可以使用 JsonElement 来格式化复杂的 json,类似于(在 kotlin 中):
我知道我可以在 moshi 中使用 JsonWriter 来做到这一点。但是有没有一种简单的方法可以做到这一点?