sch*_*bit 2 postgresql json postgresql-json
我创建了一个自定义类型如下:
create type my_type as (camelCasedIdentifier uuid, ...);
Run Code Online (Sandbox Code Playgroud)
我正在使用此自定义类型my_type来定义 JSON 正文中的字段名称:
select row_to_json(row(my_table.id, ...)::my_type) from my_table;
Run Code Online (Sandbox Code Playgroud)
我认为使用自定义类型很有用的原因是,通过这种方式,我不必在每个查询中定义 JSON 字段名称(在我的情况下它们与表列名称不同),因为您必须这样做json_build_object().
然而,这里的问题是字段名称现在全部为小写:
{"camelcasedidentifier":"d8f0a177-af13-4fa2-a2af-3bc8296d848e", ...}
Run Code Online (Sandbox Code Playgroud)
我期望:
{"camelCasedIdentifier":"d8f0a177-af13-4fa2-a2af-3bc8296d848e", ...}
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我知道这可以通过使用来解决select json_build_object('camelCasedIdentifier', my_table.id) from my_table,但我宁愿不这样做,因为我将被迫在每个查询中枚举 JSON 字段名称。
在 SQL 中,标识符不区分大小写,因此您的类型实际上是使用名为camelcasedidentifier.
如果你真的需要它,你必须使用带引号的标识符:
create type my_type as ("camelCasedIdentifier" uuid, ...);
Run Code Online (Sandbox Code Playgroud)
如果您只使用该类型进行 JSON 转换,这是可以接受的,但是从长远来看,在任何地方使用那些可怕的带引号的标识符会给您带来更多的问题,而不是值得。
| 归档时间: |
|
| 查看次数: |
1431 次 |
| 最近记录: |