pgsql中json格式数组查询结果变成了字符串
场景复原
最近使用到了json的数组,用来存储多个文件的值,发现在连表查询的时候返回结果变成了字符串。
{
"id": "repl-placeholder-007",
"sn": "",
"name": "",
"implementPlanID": "",
"auditLeaderID": "",
"auditLeaderInfo": null,
"status": "draft",
"deleted": false,
"userID": "",
"userInfo": null,
"appInstanceID": "",
"createdAt": "repl-placeholder-008",
"updatedAt": "repl-placeholder-009",
"auditImplementPlan": {
"id": "repl-placeholder-010",
"sn": "",
"auditName": "",
"createdAt": "repl-placeholder-011",
"updatedAt": "repl-placeholder-012",
"annualPlanID": "",
"auditType": "all",
"auditLeaderID": "",
"auditDate": "repl-placeholder-031",
"remark": "",
"deleted": false,
"createdBy": "",
"appInstanceID": "",
"attaches": "[\"jimeng.io\",\"baidu.com\"]"
"attaches": [
"jimeng.io",
"baidu.com"
]
},
"attaches": "[\"jimeng.io\",\"baidu.com\"]"
"attaches": [
"打豆豆.io",
"baidu.com"
]
}
}
我们发现attaches被转换成了字符串,但是我attaches字段明明定义的是json类型的,但是返回 结果变成了字符串。
我们来看下数据库的字段
ADD COLUMN "attaches" text NOT NULL DEFAULT '[]'::jsonb;
可以看到用的是json类型
还有就是在查询的时候使用了to_json
这是to_json的函数的文档描述
把值返回为json或者jsonb。数组和组合被(递归地)转换成数组和对象;否则, 如果有从该类型到json的投影,将使用该投影函数来执行转换; 否则将产生一个标量值。对任何一个数值、布尔量或空值的标量类型, 将使用其文本表达,以这样一种方式使其成为有效的json或者jsonb值。~~~~
所以这是正常的情况,但是我们需要的是以数组的形式输出。这是发现 attaches字段用的是text字段,也就是文本字段,他可能就是导致问题出现的原因, 于是更改了字段的类型为jsonb,发现解决了,attaches的输出已经正常了。
当然这种操作还有一个改进的办法,就是使用数组,而不是json数组,这样也不会出现这些问题了。
ADD COLUMN "attachess" text[] DEFAULT '{}'::text[];
pgsql中json格式数组查询结果变成了字符串的更多相关文章
- 关于http接口开发中json格式数据编码问题处理
关于http接口开发中json格式数据编码问题处理 在实际工作中,接口很多时候返回json格式,但有时返回的格式会有编码问题 假设如下接口:http://service.test.com/interf ...
- python中json格式数据输出实现方式
python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...
- Go net/http获取body中json格式数据
Go net/http获取body中json格式数据 package main import ( "encoding/json" "fmt" "io/ ...
- 把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d
var json = { name: "任务名称" , scoreRule: "", score: "", // 如果规则表达式不为空,则默 ...
- Delphi中Json格式读写
Json是一种轻量级传输数据格式,广泛应用互联网和各应用中.json主要採用键值对来表示数据项.多个数据项之间用逗号分隔,也能够用于数组.以下注重介绍一下在delphi中使用json,在delphi中 ...
- SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析
两个方向: 一.前台至后台: Spring可以自动封装Bean,也就是说可以前台通过SpringMVC传递过来的属性值会自动对应到对象中的属性并封装成javaBean,但是只能是基本数据类型(int, ...
- ABAP 中JSON格式的转换与解析
RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中.本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法. (如果你是因为引号的问题搜索到了这篇文章,请直接拉 ...
- jmeter 导入csv数据中json格式数据取值不完整
1.jmeter中添加csv数据文件时,数据是json格式 2.jmeter中执行取值发现只取了一部分 分析原因,json格式数据,中间有逗号,而csv是根据逗号来分割的,这回导致我们取值错位. 解决 ...
- java中把字节数组转换为16进制字符串
把字符串数组转换为16进制字符串 import java.security.MessageDigest; public class StringUtil { public StringUtil() { ...
随机推荐
- 测试必知必会系列- Linux常用命令 - ps(重点)
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 查看所 ...
- BigInteger实现除法取余
BigInteger实现除法取余 BigInteger是什么? Java中,整形的最大范围是64位的long型整数.但是如果我们使用的整数超过了64位呢?这时候就用到了BigInteger.BigIn ...
- 《前端之路》- TypeScript (三) ES5 中实现继承、类以及原理
目录 一.先讲讲 ES5 中构造函数(类)静态方法和多态 1-1 JS 中原型以及原型链 例子一 1-2 JS 中原型以及原型链中,我们常见的 constructor.prototype.**prot ...
- Fluent算例精选|02瞬态滑移网格分析叶轮机械内部流动
本算例使用的软件:fluent.icem 通过学习本算例您将获得? 1.学会周期区域创建 2.学会瞬态求解器及滑移网格边界条件设置 3.学会周期面.滑移面设置 4.学会如何监测压力脉动(声学仿真) 5 ...
- 一明单词本持续更新ing...
introductionshuffingdeployspecifyingreliableclusters programming scalemachinesdeliveringsubmarineadd ...
- 零售CRM系统开发的核心功能
在零售行业中,客户关系管理系统是一个包含销售,市场营销和客户服务流程的中央枢纽.它为企业所有者提供了一种可以结合所有与销售有关的问题并管理销售流程的有效工具.零售CRM可以留住客户,提供个性化的一流客 ...
- 环境篇:VMware Workstation安装Centos7
环境篇:VMware Workstation安装Centos7 1 VMware Workstation安装 CentOS下载地址:http://isoredirect.centos.org/cent ...
- 给bootstrap-sweetalert弹框的按钮绑定事件
一. sweetalert cdn使用 sweetalert提供了很多的炫酷弹框,有很多的用法.关于本地导入使用sweetalert的方法,在之前的博客里提到过(点击前往),不过我们也可以使用cdn. ...
- [模拟,英语阅读] Codeforces 549D Haar Features
题目:https://codeforces.com/contest/549/problem/D D. Haar Features time limit per test 1 second memory ...
- eNSP之VLAN设计实验
0.实验目的 1.掌握基于IP地址的VLAN划分: 2.掌握基于交换机端口VLAN划分: 3.通过网关实现不同VLAN间的通讯; 1.实验环境 环境:eNSP模拟器 版本信息:1.3.00.100 V ...