2016-04-22 52 views
0

我目前正在设计一个与Postgres数据库之上的Rails API对话的Web应用程序。我使用PostgreSQL中的jsonb数据类型以JSON格式存储一些数据。我提交到Rails的API中的JavaScript对象的关键是在全部大写:Postgresql显示字母之间的下划线的JSON密钥?

{ 
    WEIGHT: 150, 
    RACE: 'White/Caucasian', 
} 

将数据提交就好了,但是当我看在数据库中,密钥存储与字母之间的下划线,像这样:

{ 
    "W_e_i_g_h_t": 150, 
    "R_a_c_e": "White/Causasian", 
} 

如果我使用Rails的控制台来创建从数据库模型对象,按键仍然存储在相同的方式,用字母之间的下划线。但是当数据返回到我的web应用程序时,这些密钥又回到了所有大写字母,没有下划线。像这样将密钥存储在数据库中的原因是什么?

+0

以前从未见过这个问题,但您提交的JSON无效。这是否影响它?有效的JSON版本位于https://gist.github.com/maxshelley/43848eb3d699a9761cfe7b419639ec40 – maxshelley

+1

Postgres不会触摸您的密钥。相反,rails(或者你使用的其中一个组件)将key从'camelCase'转换为'under_scores'。但是,因为您使用全部大写的键,每个字母都会得到一个下划线。 – pozs

+0

@maxshelley对不起,我写了一个实际的Javascript对象而不是有效的JSON格式。 – ClydeDroid

回答

0

@pozs让我朝着正确的方向 - 它看起来像我正在使用的资源库,angularjs-rails-resource,转换属性。

“默认情况下,我们在下划线和驼峰大小之间转换属性名称。”

非常感谢!