转义 JSON 以避免更改插入字符串
Escaping JSON to avoid changing the insert string
我有以下 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 保持不变就好了。
js 中的这个字符串 const jsString = JSON.stringify({"escaping":"d\\"on't"});
将导致这个 {"escaping":"d\\"on't"}
虽然 js 中的这个字符串 const jsString = JSON.stringify({"escaping":"don't"});
会导致这个 {"escaping":"don't"}
- 不要把你的数据串成JSON,直接用
- 将列格式设置为 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 类型的灵活性。您可以用任何可以想到的方式操作您的输入数据。
我有以下 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 保持不变就好了。
js 中的这个字符串 const jsString = JSON.stringify({"escaping":"d\\"on't"});
将导致这个 {"escaping":"d\\"on't"}
虽然 js 中的这个字符串 const jsString = JSON.stringify({"escaping":"don't"});
会导致这个 {"escaping":"don't"}
- 不要把你的数据串成JSON,直接用
- 将列格式设置为 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 类型的灵活性。您可以用任何可以想到的方式操作您的输入数据。