在命令行中如何解碼二次JSON編碼的字符串?

2020-12-20 我聊Python

JSON 二次encode解碼,通常我們的大的數據結構JSON中還會包含JSON 字符串,來保存一些額外的信息,這樣一來這個結構就是二次JSON編碼了。如何在命令行中將這個結構展開呢?

構造測試數據,如下是通過PHP命令行生成測試一個二次JSON encode的字符串

php -r "echo json_encode(json_encode(['a' => ['b' => 1]]));"# "{\"a\":{\"b\":1}}"

如何解決這個問題,一開始想到的就是用sed替換,將字符串中的 \\" 替換為 \",\" 替換為 ",字符串開頭的 " 和末尾的 " 替換為空。

php -r "echo json_encode(json_encode(['a' => ['b' => 1]]));" |\sed 's/\\\\"/\\"/g; s/\\\"/"/g; s/^"//; s/"$//' | \jq .{"a": {"b": 1}}

問題還沒有解決,因為每次我們都需要編譯一長串的sed正則,十分的麻煩,想到把這個命令加到 ~/.bash_profile 中,貌似不行," 還需要再次轉義,這樣一來就顯得十分的麻煩,還不如自己寫一個管道程序,從數據管道中讀取數據,然後用程序替換。下面是用Go編寫的程序,從管道標準輸入 os.Stdin 中讀取數據,每次一行,做四次字符串替換,且輸出。

Golang實現引號反轉義

相關焦點

  • python如何編碼解碼解析json對象
    前言json是一種以鍵值對形式存在的輕量級的數據結構,和python中的字典類型具有相同的表現結構。使用 JSON 函數需要導入 json 庫:import json。在Java中我們知道json有jsonObject和jsonArray,且可以通過String、map等相互轉換,那麼在python中,json對象是如何來讀取解析的呢?python解析json對象1.json.dumpsjson.dumps用於將 Python 對象編碼成 JSON 字符串。
  • php中如何對變量進行json編碼和解碼? - 老羅說教育
    在php網站的製作過程中,前臺和後臺界面的交互,經常要涉及數據的交互,而數據的交互,很多都是由json來封裝數據的,然後再後端通過解碼,將json格式的數據轉換成數組或者是其他形式的數據格式來處理,所以,對json的解碼和編碼對於數據交互是非常重要的,下面我們就來了解一下php中如何對變量進行
  • Python中字符串編碼在二進位之間相互轉換的方法
    Python中如何計算字符串的長度),對編碼的概念、分類和作用,做過一個簡單的介紹,今天的內容,還是從我們知道,機器語言本質上就是0和1組成的二進位語言,所以str和bytes字符在不能拼接的情況下,它們之間的轉換就非常必要了,因為在儲存和傳輸的時候,是必須要將str字符類型轉換為bytes字節類型的。今天就來學習如何str和bytes類型之間轉換的方法。
  • Python中常用的字符編碼,編碼解碼之間的轉換
    ASCII 碼使用指定的7 位或8 位二進位數組合來表示128 或256 種可能的字符。標準ASCII 碼也叫基礎ASCII碼,使用7 位二進位數(剩下的1位二進位為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字符。
  • 4個小竅門,讓你在Python中高效使用JSON!
    本文將主要分享以下內容:· 如何載入、編寫JSON?· 如何在命令行上優化、校驗JSON?· 如何通過使用JMESPath對JSON文檔執行高級查詢?1. JSON解碼Python自帶一個功能強大、內容豐富的JSON庫。
  • python字符的編碼與解碼
    什麼是字符編碼計算機裡面是由各種電子電路組成的,它是如何識別我們的寫的字符的,比如hello ,你,我。直接識別是不可能,它只能識別 二進位的0,1字符。所有我們輸入進去的字符,最終都會被轉化成0,1這種組合在一起的一串數字。
  • PHP中的字符串、編碼、UTF-8
    字符串的定義和使用  PHP 中能夠通過四種方法設置字符串:  單引號字符串  單引號字符串類似於 Python中的原始字符串,也就是說單引號字符串沒有變量解析功能和特殊字符轉義功能。比如$str='hello\nworld',其中的\n並沒有換行功能。
  • Python基礎:數據類型和變量&字符串和編碼
    轉義字符\可以轉義很多字符,比如\n表示換行,\t表示制表符,字符\本身也要轉義,所以\\表示的字符就是\,可以在Python的交互式命令行用print()列印字符串看看:>>> print('I\'m ok.')I'm ok.>>> print('I\'m learning\nPython.')
  • encode 和decode——帶你探索編碼與解碼的世界
    二、.encode()方法和.decode()方法.encode( )和.decode()分別稱為編碼方法和解碼方法,字符串通過編碼轉換為字節碼(一種二進位數據類型,如Unicode編碼),字節碼通過解碼轉換為可以被人類讀懂的字符串。它們的關係如下圖所示。
  • Python 讀取 JSON 數據的騷操作
    json 模塊提供了一種很簡單的方式來編碼和解碼 JSON 數據。其中兩個主要的函數是 json.dumps() 和 json.loads() 下面演示如何將一個 Python 數據結構轉換為 JSONimport jsondata = {'name' : 'ACME','shares' : 100,'price' : 542.23}json_str = json.dumps(data)下面演示如何將一個
  • 如何使用Linux sed命令進行字符串替換
    Linux中sed命令功能強大,本文將詳細介紹如何使用sed命令進行字符串替換。替換所有匹配項二、替換某行內容命令格式1:sed '行號c 新字符串' 文件命令格式2:sed '起始行號,終止行號c 新字符串' 文件第一個命令表示用新的字符串替換指定這一行的內容
  • 編碼解碼是什麼意思?URL 如何編碼解碼?為什麼要編碼?
    解碼是一種用特定方法,把數碼還原成它所代表的內容或將電脈衝信號、光信號、無線電波等轉換成它所代表的信息、數據等的過程。解碼是受傳者將接受到的符號或代碼還原為信息的過程,與編碼過程相對應。URL 如何編碼解碼?為什麼要編碼?為什麼要編碼?URL 只能使用 ASCII 字符集來通過網際網路進行發送。
  • 給妹子講python-S01E08理清python中的字符編碼方法
    給妹子講python-S01E06字符串用法進階給妹子講python-S01E07字符編碼歷史觀:從ASCII到Unicode【要點搶先看】1.python中編、解碼的本質是文本字符串和字節字符串的相互轉換2.python中編、解碼方法舉例及過程解析3.unicode、latin
  • PHP中JSON的應用
    我們用PHP生成JSON後的字符串,然後把這個字符串傳給前臺Javascript,Javascirpt就可以很容易的將其反JSON然後應用。說通俗點,它真的很像數組。言歸正傳,如何使用JSON。PHP5.2開始內置了JSON的支持。當然,如果低於這個版本的話,那麼市面上有很多PHP版本的實現,隨便下一個用就OK啦。現在主要是說說PHP內置支持的JSON。
  • 深入剖析go中字符串的編碼問題——特殊字符的string怎麼轉byte?
    UTF-8是針對Unicode的一種可變長度字符編碼。它可以用來表示Unicode標準中的任何字符。UTF-8的特點是對不同範圍的字符使用不同長度的編碼。對於0x00-0x7F之間的字符,UTF-8編碼與ASCII編碼完全相同。
  • 如何正確轉換JSON格式參數介紹
    如何正確轉換JSON格式參數介紹 在我的代碼中需要傳中文到後臺的JSON格式裡面,然後返回值裡面也包含中文。請求和相應的參數都是通過JSON傳送。
  • jq:命令行下解析JSON的神器
    這就是本文蟲蟲要給大家介紹的一個命令行工具jq,注意jq不是曾經流行的JS庫Jquery的縮寫。jq是一個出色的命令行JSON處理器,提供了用於查詢,操作和使用JSON文件的大量功能。而且作為一個命令行工具,可配合UNIX管道使用,單行腳本處理JSON。
  • Python 2.x 字符編碼終極指南
    如何理解編、解碼?如何去理解編碼、解碼?舉個例子,Alice同學剛加入了機器學習這門課,想給同班的Bob同學打個招呼。但是作為人,Alice不能通過意念和Bob交流,必須通過某種方式,比如手語、聲音、文字等來表達自己的想法。
  • Hive函數大全(含例子)之字符串函數(String Functions)
    字符串函數 String Functionsascii(string str)返回結果: 返回字符串str首字母的十進位ascii碼返回類型: int>select ascii('ABC'); -- 結果為 65base64(binary bin)返回結果: 將二進位轉換為base64編碼
  • 【Python基礎】(6.1)字符編碼
    無論存取都是涉及到字符編碼問題#1、存文本文件人類通過文本編輯器輸入的字符會被轉化成ASCII格式的二進位存放於內存中,如果需要永久保存,則直接將內存中的ASCII格式的二進位寫入硬碟#2、讀文本文件直接將硬碟中的ASCII格式的二進位讀入內存,然後通過ASCII表反解成英文字符圖2圖