如何在 json 对象的值内使用双 qoutes 进行转义/处理

How to escape / handle with double qoutes within values of a json object

提问人:Tibor 提问时间:6/21/2022 最后编辑:Tibor 更新时间:7/13/2022 访问量:193

问:

我有一个JSON文件,不幸的是,如果格式化其他双引号的值,则包含一个文件。因此,我尝试首先将文件作为文本对象读取。

如何对值中的双引号进行转义:

create table test_txt (exif text);
insert into test_txt values ('{"id": "1234", "name": "this is "my" Name", "adress": "12345 City "of" test"}');
Select exif::json from test_txt;

如果我想更改 json 对象中的文本对象。

我从 url 获取带有 curl 的文件。cmd 控制台中的 curl 有区别吗

curl “url” -o c:\tmp\test.json

copy tablename ("columnname") from program 'curl "url"' in postgres
JSON PostgreSQL 报价

评论

0赞 Bergi 6/21/2022
正确的 JSON 转义是使用反斜杠转义字符 。但我想你也会遇到从序列化格式中逃避问题,这需要自己的逃避"12345 City \"of\" test"COPY FROMCOPY
0赞 Tibor 6/21/2022
我怀疑 COPY FROM curl ...忽略或删除 JSON 字符串中的此信息。如果我在 cmd 中查看 curl 之后的文件,我会看到转义字符 \n 和 \“,但如果我在 postgresql 中复制,在这种情况下缺少 \ 字符并且我只看到” 所以在那之后我无法转换 ::json。

答:

0赞 Luis Edwards 6/21/2022 #1

我认为这可能会对您有所帮助:

如何对双引号中的双引号进行转义?

基本上使用 \“ 在 cuotes 中添加一个 cuote。

0赞 jian 6/21/2022 #2
select '{"name": "this is \"my\" Name"}' ::json;
0赞 Tibor 7/13/2022 #3

我通过以下步骤解决了这个问题:

curl "https://myJsonUrl.com -o input.json

tr -d '\n' < input.json > output.json
create unlogged table "myJson" ("getJson" text);

copy "myJson" ("getJson") FROM 'C:\myFolder\output.json' csv quote e'\x01' delimiter e'\x02';