问题标签 [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.
java - 用moshi反序列化时如何区分长值和双值?
我的目标是使用 JSON 格式同步任意行数据。由于我不知道行的确切方案(这是一种通用同步方法),我的数据模型显然必须依赖“对象”。Map<String,Object>
因此,在 Java 中,我将有一个与服务器同步的数组。
将这样的一行翻译成 JSON 会给出类似的结果
到目前为止,一切都很好 - moshi 没问题 - 一切都按预期工作。
现在的问题:当我尝试用 moshi 反序列化 JSON 时,我得到了一个“long”成员的双值。Moshi 将所有数字转换为双精度数。但不幸的是,并非所有数字都可以安全地转换为双精度数。非常大的整数(又名 long)存在双精度有限的问题。并且可能存在舍入效应。
我打开了一个关于 moshi 的问题,但不幸的是它被关闭了。也许我不够清楚。(第 192 期)
JSON 没有整数的概念——只有数字和字符串。但是上面示例中“double2”的细微细节可能会导致我的问题的解决方案:
如果一个数字不包含小数点,它是一个整数,应该转换为一个长整数。
由于 longs 不能无损地转换为 double,我需要一种方法在将值转换为 double 之前拦截解析器。但是怎么做呢?
Moshi 有这个方便的 JsonAdapter 概念——但不幸的是,我目前不知道如何在这种情况下使用它们:
这种 JsonAdapter 的输入类型必须是 Object,因为我不能将生成的 double 转换为 long。所以我必须在解析器转换任何值之前拦截它。
但是如何从那里返回一种以上的类型呢?(我必须从那里返回 String、Double 或 Long - 或者如果我可以将输入限制为只有数字,我至少必须返回 Longs 或 Doubles。)
(我的后端是用 PHP 编写的,并自动生成所需的输出:整数是不带小数点的。)
android - 如何通过 Moshi JSON 序列化器发送 Date 对象?
我必须Date
通过 API 将对象发送到服务器(实际上Date
是服务器期望的对象)。我想使用 Moshi,但我不知道如何使用自定义适配器来实现它。任何人?
android - Moshi 中的通用 json 解析
我正在使用 Square 的 JSON 解析库。我想扭曲一个通用库。就像
我无法获得通用类类型。
java - 来自自定义 Moshi 适配器的 StackOverflowError
我创建了一个 moshi 适配器来处理空字符串值:
我用它创建了一个 Moshi 实例并将其添加到我的改造中:
}
在运行时,我从 MoshiAdapterMethodsFactory 中的重复方法中得到 StackOverflowError:
.... 等等。
两个问题代码区域是第 212 行:
第 81 行:
为什么方法工厂会无休止地生成这些方法?
android - Moshi 上的多个适配器
我想确定在 Moshi 中在一个 Moshi 上安装两个适配器是否合法 - 我没有收到错误,但我发现在某些设备上存在问题:
java - 解析作为对象或对象数组的 JSON 键
在 Moshi 中,是否可以创建一个类型适配器来解析对象或相同类型的对象列表?
例如,有时 JSON 是:
其他时候是:
理想情况下,我希望有一个如下所示的 Java 对象:
android - 如何在 Moshi 中解析多种类型的 json 列表
得到一个混合了普通字符串和图像对象的 json 列表,如下所示:
如何用 Moshi 解析?
我希望有一个List<Data>
, whereStringData extends Data
和ImageData extends Data
android - 自定义改造转换器嵌套 JSON
我有一个 POJO,它在字符串变量中包含一个身份验证令牌。我需要使用以下模板将其发送到我的 API:
我正在使用 moshi 将我的 POJO 转换为 JSON,它返回
如何使用改装转换器在当前支架的外部添加额外的支架?
android - Android Kotlin Moshi 自定义 Json 适配器
好的,所以我有以下 Json Pojo:
我想写一个海关反序列化器,所以最终的对象看起来像这样:
基本上,映射是:
JCategory -> Category
JProduct -> Prod1 / Prod2
基于 JProduct 内部的一些值
JCategory 两个列表将合并为 1,其中将包含更多的 JCategory 和 Prod1/Prod2。
这是根据 Moshi 在此适配器中映射数据的有效且高效的方法吗?
请注意,我有一个 JCategory 并且在同一个对象的列表中,所以我认为适配器会自动解析它,但事实并非如此。所以我试过list.add(fromJson(it))
了,它奏效了。
所以我的问题是:
- 处理这种情况
list.add(fromJson(it))
的正确方法是什么? - 如何根据对象内部的某些属性将对象映射到另一个对象?fromJson 只能返回 1 种类型的转换对象。
java - 如何使用 Moshi 解析未知的密钥 json
这是我拥有的 JSON 示例
请注意,标签“类别、子类别...”可能会动态变化
如何使用 Moshi 解析这个 JSON?