Bash-将转义的JSON字符串转换为有效JSON

时间:2018-07-09 11:45:55

标签: json bash

我有一个从网站上抓到的json文件,其中包含一些转义字符,这是文件:

{\"module\":{\"endpoint\":{\"mode\":\"h5\",\"protocolVersion\":\"2.0\"},\"data\":{\"deliverySummary_206815365392000#address\":{\"fields\":{\"address\":\"JL. GANG MUSHOLLA NO. 70, Jawa Timur, Kab. Nganjuk, Nganjuk\",\"consignee\":\"MY NAME\",\"phone\":\"085331617235\",\"title\":\"Alamat Pengiriman \\r\\n\"},\"id\":\"206815365392000#address\",\"tag\":\"deliverySummary\",\"type\":\"biz\"},\"deliverySummary_206815365392000#billing\":{\"fields\":{\"address\":\"JL. GANG MUSHOLLA NO. 70, Jawa Timur, Kab. Nganjuk, Nganjuk\",\"consignee\":\"GALIH PRASTOWO AJI DC - 3V47\",\"phone\":\"085331617235\",\"title\":\"Alamat Penagihan \\r\\n\"},\"id\":\"206815365392000#billing\",\"tag\":\"deliverySummary\",\"type\":\"biz\"},\"detailInfo_206815365392000\":{\"fields\":{\"createdAt\":\"Dipesan pada\\r\\n 28 Jun 2018\",\"linkText\":\"MENGATUR\",\"total\":\"Rp2.499.000\",\"tradeOrderId\":206815365392000},\"id\":\"206815365392000\",\"tag\":\"detailInfo\",\"type\":\"biz\"},\"orderItem_206815365592191\":{\"fields\":{\"buyerEmail\":\"aizatakeshi1992@gmail.com\",\"delivery\":{\"createdAt\":null,\"desc\":\"Dikirimkan pada\\r\\n 06 Jul 2018\",\"email\":\"aizatakeshi1992@gmail.com\",\"method\":\"Standar\",\"status\":\"success\"},\"external\":{},\"groupId\":\"OP04472015789482\",\"icons\":[\"https:\/\/laz-img-cdn.alicdn.com\/tfs\/TB1AHvdxMmTBuNjy1XbXXaMrVXa-96-32.png\"],\"isFreeGift\":false,\"isFreeSample\":false,\"itemId\":\"325107650\",\"itemType\":\"normal\",\"itemUrl\":\"https:\/\/www.lazada.co.id\/-i325107650-s331484402.html?urlFlag=true\u0026mp=1\",\"oldTradeOrderId\":\"null\",\"paymentPendingCancel\":false,\"picUrl\":\"https:\/\/id-live.slatic.net\/original\/3824cde1323ddd3f807f9a44596078d7.jpg\",\"price\":\"Rp2.499.000\",\"quantity\":1,\"reversible\":{\"action\":true,\"closingAt\":\"sampai  21 Jul 2018\",\"desc\":\"PENGEMBALIAN SAYA\",\"dialogInfo\":null,\"paymentPendingCancel\":null,\"reverseOrderId\":\"null\",\"status\":\"enable\",\"step\":\"return\",\"tradeOrderId\":\"206815365392000\",\"tradeOrderLineId\":\"206815365592191\"},\"reviewable\":true,\"scene\":\"orderDetail\",\"sellerId\":\"100161156\",\"sequence\":1,\"skuId\":\"331484402\",\"status\":\"return\",\"title\":\"Redmi Note 5  3 +32GB - Black\",\"tradeOrderId\":\"206815365392000\",\"warranty\":\"1 Tahun Garansi Resmi Distributor Lokal\"},\"id\":\"206815365592191\",\"tag\":\"orderItem\",\"type\":\"biz\"},\"package_OP04472015789482\":{\"fields\":{\"isLiveUp\":false,\"packageId\":\"1\"},\"id\":\"OP04472015789482\",\"tag\":\"package\",\"type\":\"biz\"},\"root_206815365392000\":{\"fields\":{\"buyerId\":\"31392191\"},\"id\":\"206815365392000\",\"tag\":\"root\",\"type\":\"biz\"},\"sellerInfo_100161156\":{\"fields\":{\"sellerId\":\"100161156\",\"shopName\":\"PT. Ecart Services Indonesia\",\"shopUrl\":\"\/\/www.lazada.co.id\/\"},\"id\":\"100161156\",\"tag\":\"sellerInfo\",\"type\":\"biz\"},\"shippingInfo_OP04472015789482\":{\"fields\":{\"delivery\":{\"createdAt\":\"Dikirimkan pada\\r\\n 06 Jul 2018\",\"desc\":\"Standar\",\"email\":null,\"method\":\"Standard\",\"status\":\"success\"},\"statusMap\":{\"active\":\"Telah diterima\",\"all\":[\"Dalam proses\",\"Dalam pengiriman\",\"Telah diterima\"]},\"trackingList\":[{\"info\":\"Pesanan anda telah tiba. Terima kasih sudah berbelanja di Lazada!\",\"updatedAt\":\"06 Jul 2018 - 00:10\"},{\"info\":\"Kami mencoba mengirimkan pesanan, tetapi tidak dapat menghubungi anda. Kami akan mengirimkan ulang pesanan anda\",\"updatedAt\":\"03 Jul 2018 - 20:44\"},{\"info\":\"Pesanan anda telah dikirim oleh jasa pengiriman NinjaVanID dengan nomor resi NLIDRT0000457661. Silakan lacak pesanan anda melalui tautan berikut: <a href=\\\"https:\/\/example.com\/tracker?trackingNumber=NLIDRT0000457000\\\" title=\\\"Lacak Order\\\" target=\\\"_BLANK\\\" style=\\\"font-size: 11.52px\\\">LEL Track \u0026 Trace<\/a>\",\"updatedAt\":\"29 Jun 2018 - 15:31\"},{\"info\":\"Pesanan Anda sudah diterima NinjaVanID dan akan segera dikirim\",\"updatedAt\":\"29 Jun 2018 - 06:49\"},{\"info\":\"Pesanan anda telah dikemas dan akan segera diantar oleh partner logistik kami.\",\"updatedAt\":\"28 Jun 2018 - 20:06\"},{\"info\":\"Terima kasih sudah berbelanja di Lazada! Pesanan anda telah kami terima dan sedang dalam proses verifikasi. Kami akan mengirimkan update selanjutnya ke email anda.\",\"updatedAt\":\"28 Jun 2018 - 09:12\"},{\"info\":\"Pesanan Anda telah berhasil diverifikasi!\\n\",\"updatedAt\":\"28 Jun 2018 - 09:12\"}]},\"id\":\"OP04472015789482\",\"tag\":\"shippingInfo\",\"type\":\"biz\"},\"totalSummary_206815365392000\":{\"fields\":{\"fees\":[{\"key\":\"Subtotal\\r\\n\",\"value\":\"Rp2.499.000\"},{\"key\":\"Biaya Pengiriman\\r\\n\",\"value\":\"Rp0\"}],\"payments\":[{\"key\":\"Metode Pembayaran\",\"value\":\"Bayar di Tempat\\r\\n\"}],\"taxTitle\":\"Termasuk PPN\",\"total\":\"Rp2.499.000\"},\"id\":\"206815365392000\",\"tag\":\"totalSummary\",\"type\":\"biz\"}},\"linkage\":{\"common\":{\"compress\":true,\"queryParams\":\"^^$$86e892704d9ec987b2587c95de76d655{$_$}H4sIAAAAAAAAAIVSy24UMRD8l+Eardx+jZ0biEsuBNgPiNru9mbEvPDMIiVR\/p32BhQUgfDJdldVV5f91O1cp2HGsbt+6tYR97LUqbvu7l131a14YtmfeOYqiOerbsaJjyvmdr1Mt5W4fuQdh1HQ543r+20bTnPTyiNu2yeBCzIv02HERyQ8LI1ymHAW6Ynn\/YDrcKj8\/czbfvhy5vrw4fzA9Q\/lry9FaZBa5Ya6awMmaohw1e0ViS\/gdq+VD+CMd7\/LLwP82hyHx3ZQMoYYWpdZ2m9HsYv7uXLzTDwOP8TC8TxNWB\/u3ui9Q6LK2yYTFeO8h0galUrK2ZDBAbocfMgp+Chu\/yeWhnEc5pOIARpHoSTHvbLGxoikIJMvSdtCaC5iLYqbuSxvdYSPPWjNEHUI0XgfoyVHOcaiSQkoC\/8S+83O0yvdvdJdTmyFYCw7A06FVHSmlBVAUubyEfI3SfDu9rOyttcKXB+iDVrYOlFfSi7sKfU+uqRC6Z3NIfd9dqElUZdl\/6ttzaUlaHWREA0bsNq2GLkvBoswNx5H8d3GBqXAAzjfeipZOrnii4GewAalMRoqoXcyQfu62\/2wrhLvhfsX24aiL+IdmYgixiLRR20VRutDiiwS+7Lj+I\/XE4WkCAGisy5HCJCBdZEEASBQrzx0z88\/Aam6sGVeAwAA\",\"submitParams\":\"^^$$39ecbfc485ddeabea7a97c9bf49dde7f{$_$}H4sIAAAAAAAAAKtWKkktys3MS8xRsqpWKshJLEnLL8pVslLKMFXSUSpITE8FstNT81KLgCpqdZTyEnNTgwsSk0HC+bn+RSmpRS6pJYmZQEkAPC1INEsAAAA=\"},\"input\":[],\"request\":[],\"signature\":\"2ebd7a1ba155aeb16edc376e792b2456\"},\"hierarchy\":{\"component\":[\"package\",\"orderItem\",\"deliverySummary\",\"shippingInfo\",\"root\",\"totalSummary\",\"detailInfo\",\"sellerInfo\"],\"root\":\"root_206815365392000\",\"structure\":{\"package_OP04472015789482\":[\"sellerInfo_100161156\",\"shippingInfo_OP04472015789482\",\"orderItem_206815365592191\"],\"root_206815365392000\":[\"detailInfo_206815365392000\",\"package_OP04472015789482\",\"totalSummary_206815365392000\",\"deliverySummary_206815365392000#address\",\"deliverySummary_206815365392000#billing\"]}},\"reload\":true},\"success\":true}

我想使其成为有效的json文件,我尝试将\"替换为"

sed 's/\\"/"/g' file.json

但是它不起作用,URL部分仍然是一团糟,这是导致问题的URL:

<a href=\\\"https:\/\/example.com\/tracker?trackingNumber=NLIDRT0000457000\\\" title=\\\"Lacak Order\\\" target=\\\"_BLANK\\\" style=\\\"font-size: 11.52px\\\">LEL Track \u0026 Trace<\/a>

我该如何解决?我只想将该文件设为有效的json文件

1 个答案:

答案 0 :(得分:3)

您的整个文件只是一个嵌入式JSON值。如果将其用双引号引起来,然后将结果解析为JSON,则会得到实际的对象。

$ j1="{\"module\":{\"endpoint\":...}"  # The original
$ j2="\"$j1\""                         # Wrapped in quotes
$ echo "$j2" | jq 'fromjson'           # Decoded
{
  "module": {
    "endpoint": {
...
相关问题