sách gpt4 ai đã đi

Làm thế nào để lấy chuỗi json được định dạng từ một đối tượng json?

In lại 作者:行者123 更新时间:2023-12-05 02:18:34 28 4
mua khóa gpt4 Nike

我正在存储 cat ~/path/to/file/blah | 的输出jq tojson 在一个变量中,稍后在带有 JSON 内容的 curl POST 中使用。它运作良好,但它删除了所有换行符。我知道 JSON 不支持换行符,但我希望将它们替换为 \N 字符,这样当使用数据时,它不会全是一行。

有办法吗?

ví dụ:

{
"test": {
"name": "test",
"description": "blah"
},
"test2": {
"name": "test2",
"description": "blah2"
}
}

成为

"{\"test\":{\"name\":\"test\",\"description\":\"blah\"},\"test2\":{\"name\":\"test2\",\"description\":\"blah2\"}}"

但我希望它看起来像

{\n \"test\": {\n \"name\": \"test\",\n \"description\": \"blah\"\n },\n \"test2\": {\n \"name\": \"test2\",\n \"description\": \"blah2\" \n }\n}

我实际上只是将它转换为 JSON 字符串,以便它能够作为另一个 JSON 的一部分发布。什么时候发布,我希望它有它原来的格式,如果有\n 个字符就可以实现。

我可以通过以下方式手动完成此操作

cat 文件 | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' | sed 's/\"/\\"/g')

但这并不理想。

1 Câu trả lời

tojson(或其他 json 输出过滤器)不会格式化 json。它将采用通常的紧凑形式。有一个 feature request在那里,所以在未来的版本中注意这一点。

您可以利用 jq 的常规范式化输出,但您需要对其进行字符串化。您可以通过输入原始输入(格式化输出)来模拟字符串化。这会将所有输入作为单个字符串读入。由于输入只是一个 json 对象,它会生成该对象的字符串表示形式。

如果你不介意额外的 jq 调用,你可以这样做:

$ var=$(jq '.' input.json | jq -sR '.')
$ echo "$var"
"{\n \"test\": {\n \"name\": \"test\",\n \"description\": \"blah\"\n },\n \"test2\": {\n \"name\": \"test2\",\n \"description\": \"blah2\"\n }\n}\n"

当然,如果您的输入已经格式化,您可以省略第一个 jq 调用。

关于json - 如何从 json 对象中获取格式化的 json 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069839/

28 4 0
Bài viết được đề xuất: R - stargazer 4 星截止值
Bài viết được đề xuất: api - getUpdates Telegram bot API 中忽略的偏移量参数
Bài viết được đề xuất: Systrace 命令行错误
Bài viết được đề xuất: ruby-on-rails - Rails:多部分/表单数据的 ActionDispatch::Request.parameter_parsers
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com