Ruby on rails 3 哪个组件在Rails JSON响应中排序JSON值?为什么?
我注意到Rails JSON输出是按字母顺序排序的 这是基本Rails应用程序的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
{"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