1

我有以下 json 字符串,应该在单列中直接插入到数据库中:

const jsString = JSON.stringify({"escaping":"d\"on't"});

const insertion = [{"a":2,"json":jsString}];

const query = pgp.helpers.insert(insertion,["a","json"],"tbl");

但是实际上最终在数据库中的是:

{"escaping":"d"on't"}

删除 d"on't 中的转义 \ 并使字符串无效 json。有什么方法可以避免这种情况吗?

这将是有益的,因为如果我的有效 json 保持不变,那就太好了。

4

2 回答 2

2
  1. 不要将你的数据字符串化成 JSON,直接使用它
  2. :json使用修饰符将列格式设置为 JSON

const data = {escaping: "d\"on't"};
const insertion = [{a:2, json:data}];
const query = pgp.helpers.insert(insertion, ["a", "json:json"], "tbl");

但是如果你data始终是一个对象,那么你甚至不需要使用:json修饰符,它会自动格式化为正确的 JSON。

有关更多详细信息,请参阅ColumnSet类型的灵活性。您可以以各种可以想到的方式操作输入数据。

于 2016-05-23T17:51:56.050 回答
0

js中的这个字符串const jsString = JSON.stringify({"escaping":"d\\\"on't"});会导致这个{"escaping":"d\\\"on't"}

虽然 js 中的这个字符串const jsString = JSON.stringify({"escaping":"don't"});会导致这个{"escaping":"don't"}

于 2016-05-23T13:32:20.293 回答