Ruby on rails 3 哪个组件在Rails JSON响应中排序JSON值?为什么?

Ruby on rails 3 哪个组件在Rails JSON响应中排序JSON值?为什么?,ruby-on-rails-3,Ruby On Rails 3,我注意到Rails JSON输出是按字母顺序排序的 这是基本Rails应用程序的JSON输出示例: {"created_at":"2013-02-03T19:44:39Z","email":"mohsen@example.com","id":2,"name":"Mohsen","updated_at":"2013-02-03T19:44:39Z"} 似乎在创建的和在更新的具有相同的起源,并且可能应该相邻。但是Rails输出是按字母顺序排序的 哪个组件在做这项工作?为什么?我发现ActiveMo

我注意到Rails JSON输出是按字母顺序排序的

这是基本Rails应用程序的JSON输出示例:

{"created_at":"2013-02-03T19:44:39Z","email":"mohsen@example.com","id":2,"name":"Mohsen","updated_at":"2013-02-03T19:44:39Z"}
似乎在创建的
和在
更新的
具有相同的起源,并且可能应该相邻。但是Rails输出是按字母顺序排序的


哪个组件在做这项工作?为什么?

我发现
ActiveModel::Serializers::JSON\as#u JSON
的第一行调用了
ActiveModel::serializable\u hash
,它有:

这是属性排序的地方。至于它们为什么被分类,答案就不那么清楚了,但是commit注释只是“将AMo-JSON序列化程序集成到AR中”。他没有说明为什么要添加对
.sort
的调用


但是,如果您不喜欢这种类型,那么只要您愿意在Rails 4发布时升级到它,您就很幸运了。Rails核心团队似乎同意不应该对JSON键进行排序。此提交不在最新的Rails 3.2中,但将在即将发布的Rails 4中。

我发现
ActiveModel::Serializers::JSON>as#JSON
的第一行调用了
ActiveModel::Serialization#serializable_hash
,它具有:

这是属性排序的地方。至于它们为什么被分类,答案就不那么清楚了,但是commit注释只是“将AMo-JSON序列化程序集成到AR中”。他没有说明为什么要添加对
.sort
的调用


但是,如果您不喜欢这种类型,那么只要您愿意在Rails 4发布时升级到它,您就很幸运了。Rails核心团队似乎同意不应该对JSON键进行排序。此提交不在最新的Rails 3.2中,但将在即将发布的Rails 4中。

是因为
OrderedHash
还是因为您使用的是ruby<1.9?我不确定发生了什么,但这里是Rails json编码的源代码。您使用的是ruby 1.9吗?是因为
OrderedHash
还是因为您使用的是ruby<1.9?我不确定发生了什么,但这里是Rails json编码的源代码。你在使用ruby 1.9吗?
attribute_names = attributes.keys.sort