- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 Java java.util.Set
的 Comparable
我希望按升序序列化为 JSON 数组的类型。
有一个对象映射器功能可以序列化按映射键排序的映射,但没有提到 Java 集。如果我将元素存储在 java.util.Set
中在我的 POJO 中,将 Jackson ObjectMapper
以任何顺序将它们序列化为 JSON 数组?
如果没有,我正在考虑为此目的为集合编写一个自定义序列化程序 - 有人可以建议有更好的方法吗?
最终,目标是将唯一整数数组反序列化为“请求”pojo 中的某种容器。然后处理请求并将该输入字段传递到“响应”对象中相应的输出字段(未更改)。
我想将 POJO 中的数据存储为 java.util.Set<Integer>
只是为了让所有用户满意(如果您尝试将其存储为 Set
的子类型,那么 POJO 界面的消费者可能会因为他们不能只获得 Set
而必须期待 HashSet
或一个 TreeSet
)。
这行得通吗?
[5,4,3,2,1]
被反序列化为 Set<Integer>
但是,我使用 @JsonDeserialize(as=TreeSet.class)
在setter方法上。所以对象的运行时类型现在是 TreeSet
(即使它作为 Set
存储在 POJO 中)。Set
通过服务器传递并最终结束存储在响应 POJO 中(运行时类型仍然是 TreeSet
,即使 POJO 字段类型是 Set)。ObjectMapper
序列化 TreeSet
到 JSON 数组 [1,2,3,4,5]
(因为 TreeSet
是自然排序的)。上面的第 3 项是我想知道的 - will ObjectMapper
使用 POJO 字段的运行时类型,还是声明的类型?
如何确保我的 Set
是否按排序顺序转换为 JSON 数组?
最佳答案
A JSON数组是一个有序集合,就像 Java 数组一样:
An array is an ordered collection of values. An array begins with
[
(left bracket) and ends with]
(right bracket). Values are separated by,
(comma).
但是,已排序 并不意味着已排序。这只是意味着它保留给定值的顺序:
如果 Set
已排序(例如 TreeSet
),则 JSON 数组将排序,根据的排序顺序集合
:
TreeSet
: The elements are ordered using their natural ordering, or by aComparator
provided at set creation time, depending on which constructor is used.
如果 Set
是无序的(例如 HashSet
),则 JSON 数组按 任意 顺序由 设置
。
HashSet
: It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time.
这不同于 JSON 的字段对象:
An object is an unordered set of name/value pairs. An object begins with
{
(left brace) and ends with}
(right brace). Each name is followed by:
(colon) and the name/value pairs are separated by,
(comma).
关于java - Jackson ObjectMapper : Can java. util.Set 按升序序列化为 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144385/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!