首页 > 解决方案 > 有比 JSON 更好的序列化格式吗?为了快速查找和保留键顺序?

问题描述

我正在使用 PHP,但问题并不完全是 PHP 特定的。

我需要序列化对象,目前我使用的是 JSON 格式,这可能是序列化对象的示例:{"22":{"val":"e","gIds":["48"]},"23":{"val":"e","gIds":["235"]}}

鉴于这种格式,我可以简单地使用 PHP 的 : $array = json_decode($string, true),然后我可以使用isset($array[22])array_key_exists(22, $array)进行快速查找,我认为这相当于hashmap/dictionary在不同的语言中。

不幸的是,默认情况下 JSON 格式不会保持对象内属性的顺序(https://stackoverflow.com/a/7214312/2263395)。该顺序在同一版本的 PHP 中可能是一致的,但根据 JSON 标准,不能保证行为。

我可以使它成为嵌套对象的列表:[{"22":{"val":"e","gIds":["48"]}},{"23":{"val":"e","gIds":["235"]}}]甚至移动id内部:[{"id": "22","val":"e","gIds":["48"]},{"id": "23","val":"e","gIds":["235"]}] 这样我可以保留顺序,但是每个我都不能再使用快速查找功能,例如:isset或者array_key_exists在我创建哈希图之前。对于具有数千个项目的 JSON,我必须重复多次才能准备哈希图,因此我可以使用快速查找功能。

我可以同时拥有orderand speed,是否有任何格式可以做到这一点?

说到 PHP 选项,有没有高性能的竞争对手?

标签: phparraysjsonhashtablelookup

解决方案


推荐阅读