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

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 编写的,并自动生成所需的输出:整数是不带小数点的。)

0 投票
1 回答
2374 浏览

android - 如何通过 Moshi JSON 序列化器发送 Date 对象?

我必须Date通过 API 将对象发送到服务器(实际上Date是服务器期望的对象)。我想使用 Moshi,但我不知道如何使用自定义适配器来实现它。任何人?

0 投票
0 回答
432 浏览

android - Moshi 中的通用 json 解析

我正在使用 Square 的 JSON 解析库。我想扭曲一个通用库。就像

我无法获得通用类类型。

0 投票
1 回答
1128 浏览

java - 来自自定义 Moshi 适配器的 StackOverflowError

我创建了一个 moshi 适配器来处理空字符串值:

我用它创建了一个 Moshi 实例并将其添加到我的改造中:

}

在运行时,我从 MoshiAdapterMethodsFactory 中的重复方法中得到 StackOverflowError:

.... 等等。

两个问题代码区域是第 212 行:

第 81 行:

为什么方法工厂会无休止地生成这些方法?

0 投票
1 回答
829 浏览

android - Moshi 上的多个适配器

我想确定在 Moshi 中在一个 Moshi 上安装两个适配器是否合法 - 我没有收到错误,但我发现在某些设备上存在问题:

0 投票
1 回答
824 浏览

java - 解析作为对象或对象数组的 JSON 键

在 Moshi 中,是否可以创建一个类型适配器来解析对象或相同类型的对象列表?

例如,有时 JSON 是:

其他时候是:

理想情况下,我希望有一个如下所示的 Java 对象:

0 投票
1 回答
2353 浏览

android - 如何在 Moshi 中解析多种类型的 json 列表

得到一个混合了普通字符串和图像对象的 json 列表,如下所示:

如何用 Moshi 解析?

我希望有一个List<Data>, whereStringData extends DataImageData extends Data

0 投票
2 回答
546 浏览

android - 自定义改造转换器嵌套 JSON

我有一个 POJO,它在字符串变量中包含一个身份验证令牌。我需要使用以下模板将其发送到我的 API:

我正在使用 moshi 将我的 POJO 转换为 JSON,它返回

如何使用改装转换器在当前支架的外部添加额外的支架?

0 投票
1 回答
1412 浏览

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 种类型的转换对象。
0 投票
2 回答
4431 浏览

java - 如何使用 Moshi 解析未知的密钥 json

这是我拥有的 JSON 示例

请注意,标签“类别、子类别...”可能会动态变化

如何使用 Moshi 解析这个 JSON?