You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用array_to_json获取PostgreSQL数组后如何在JS中转为对象数组

解决方案

方案1:PostgreSQL侧直接返回正确格式(推荐)

你当前用text[]存储序列化对象字符串的结构本身就会导致array_to_json只做表层转换,不会解析内部的对象结构。
优先建议把字段类型改成jsonb[],存储时直接写入JSON对象数组,后续查询调用array_to_json就能直接输出你需要的目标格式,无需额外转换。
如果不想修改字段类型,可以直接用以下SQL做查询转换:

SELECT json_agg(jsonb_build_object(
    'x', (regexp_match(elem, '''x'':''(\d+)'''))[1]::int,
    'y', (regexp_match(elem, '''y'':''(\d+)'''))[1]::int
)) AS result
FROM unnest('{{''x'':''80'',''y'':''60''},{''x'':''750'',''y'':''590''}}'::text[]) AS elem;

执行后直接返回[{"x":80,"y":60},{"x":750,"y":590}]格式的结果。

方案2:后端JS侧转换

如果你只能拿到[["'x':'80'","'y':'60'"],["'x':'750'","'y':'590'"]]这个返回结构,用以下JS代码即可完成转换:

const arr = [["'x':'80'","'y':'60'"],["'x':'750'","'y':'590'"]];
const result = arr.map(item => {
  const obj = {};
  item.forEach(kvStr => {
    // 清除冗余引号后拆分键值
    const [key, value] = kvStr.replaceAll("'", "").split(":");
    obj[key] = parseInt(value);
  });
  return obj;
});

转换后result就是你需要的[{x:80,y:60},{x:750,y:590}]格式。

内容的提问来源于stack exchange,提问作者alokofaarmax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 10:36:07