php - 有比 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,我必须重复多次才能准备哈希图,因此我可以使用快速查找功能。
我可以同时拥有order
and speed
,是否有任何格式可以做到这一点?
说到 PHP 选项,有没有高性能的竞争对手?
解决方案
推荐阅读
- java - 通过引用延迟初始化的非易失性字符串进行访问是线程安全的吗?
- angular - 如何在 ngStyle 中使用使用 Mixin $Variable?
- sql - 为 IN 运算符传递 ID(存储过程)
- json - 根据特定的子值获取 json 值
- java - 初始化函数后弹簧过滤器丢失设置变量
- c# - 具有 x 个附加对象的类
- html - 不显示 Wordpress 图像(Woocommerce)
- sql-server - 我的订阅者数据库失去了与发布者的连接并过期。我的数据可以保存吗?
- javascript - 如何通过在 html5/canvas 中拖动背景来移动对象?
- spring - Spring 应用程序未在 Postgres 数据库上创建表