国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux下json字符串格式化、解決json.tool中文亂碼

這篇具有很好參考價值的文章主要介紹了linux下json字符串格式化、解決json.tool中文亂碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言

環(huán)境:centos7.9
在有外網(wǎng)的情況下,如果對數(shù)據(jù)沒有嚴(yán)格的保密,那么可以通過在線json解析網(wǎng)站https://www.sojson.com/對json字符串進(jìn)行格式化。本篇講如何在Linux環(huán)境下使用命令對json字符串進(jìn)行格式化。

python的json.tool工具

#先創(chuàng)建一個json格式的文件,如下
#json字符串都是一行,可讀性差,需要格式化
[root@master ~]# cat python.py
{"name": "中國","province": [{"name": "黑龍江","cities": {"city": ["哈爾濱", "大慶"]}}, {"name": "廣東","cities": {"city": ["廣州", "深圳", "珠海"]}}, {"name": "臺灣","cities": {"city": ["臺北", "高雄"]}}, {"name": "新疆","cities": {"city": ["烏魯木齊"]}}]}

#使用python 的json.tool模塊工具對json字符串格式化
#雖然能正常格式化,但中文亂碼了
[root@master ~]#  python -m json.tool python.py 			#與下面這條命令等價
[root@master ~]# cat python.py | python -m json.tool		#與上面這條命令等價
{
    "name": "\u4e2d\u56fd",
    "province": [
        {
            "cities": {
                "city": [
                    "\u54c8\u5c14\u6ee8",		#中文亂碼了
                    "\u5927\u5e86"
                ]
            },
            "name": "\u9ed1\u9f99\u6c5f"
        },
        {
            "cities": {
                "city": [
                    "\u5e7f\u5dde",
                    "\u6df1\u5733",
                    "\u73e0\u6d77"
                ]
            },
            "name": "\u5e7f\u4e1c"
        },
        {
            "cities": {
                "city": [
                    "\u53f0\u5317",
                    "\u9ad8\u96c4"
                ]
            },
            "name": "\u53f0\u6e7e"
        },
        {
            "cities": {
                "city": [
                    "\u4e4c\u9c81\u6728\u9f50"
                ]
            },
            "name": "\u65b0\u7586"
        }
    ]
}
[root@master ~]# 

解決json.tool中文亂碼

修改json.tool程序,該程序存在于python系統(tǒng)庫安裝路徑下的json/tool.py,
json.dump方法中增加參數(shù)ensure_ascii=False,即讓json.tool程序不強(qiáng)行保證json的內(nèi)容都轉(zhuǎn)義為ascii編碼,中文原樣輸出即可。

[root@master ~]# find / -name tool.py
/usr/lib64/python2.7/json/tool.py
[root@master ~]# vim /usr/lib64/python2.7/json/tool.py		#修改tool.py文件,修改完成保存退出即可
 31         except ValueError, e:
 32             raise SystemExit(e)
 33     with outfile:
 34         json.dump(obj, outfile, sort_keys=True,
 35                   indent=4,ensure_ascii=False,separators=(',', ': '))	#添加ensure_ascii=False
 36         outfile.write('\n')

[root@master ~]# cat python.py | python -m json.tool				#驗(yàn)證,中文正常
{
    "name": "中國",
    "province": [
        {
            "cities": {
                "city": [
                    "哈爾濱",
                    "大慶"
                ]
            },
            "name": "黑龍江"
        },
        {
            "cities": {
                "city": [
                    "廣州",
                    "深圳",
                    "珠海"
                ]
            },
            "name": "廣東"
        },
        {
            "cities": {
                "city": [
                    "臺北",
                    "高雄"
                ]
            },
            "name": "臺灣"
        },
        {
            "cities": {
                "city": [
                    "烏魯木齊"
                ]
            },
            "name": "新疆"
        }
    ]
}

jq工具

jq工具也是一個很好用的json格式化命令行工具。jq包默認(rèn)不存在centos鏡像倉庫中,所以需要安裝epel源。文章來源地址http://www.zghlxwxcb.cn/news/detail-553612.html

[root@master ~]# yum -y install epel-release
[root@master ~]# yum install  jq -y
[root@master ~]# jq . python.py				#與下面命令等價,有個點(diǎn).號
[root@master ~]# cat python.py | jq .		#與上面命令等價,有個點(diǎn).號
{
  "name": "中國",
  "province": [
    {
      "name": "黑龍江",
      "cities": {
        "city": [
          "哈爾濱",
          "大慶"
        ]
      }
    },
    {
      "name": "廣東",
      "cities": {
        "city": [
          "廣州",
          "深圳",
          "珠海"
        ]
      }
    },
    {
      "name": "臺灣",
      "cities": {
        "city": [
          "臺北",
          "高雄"
        ]
      }
    },
    {
      "name": "新疆",
      "cities": {
        "city": [
          "烏魯木齊"
        ]
      }
    }
  ]
}
[root@master ~]# 

jq命令語法

Usage:	jq [options] <jq filter> [file...]
	jq [options] --args <jq filter> [strings...]
	jq [options] --jsonargs <jq filter> [JSON_TEXTS...]

jq是一個處理JSON字符串的工具,將給定的JSON字符串輸入經(jīng)過過濾器過濾后并以JSON形式生成輸出結(jié)果
最簡單的過濾器是點(diǎn).,它將jq的輸入復(fù)制到它的輸出且未經(jīng)修改(除了格式)。
常用options:
 -c      緊湊輸出為一行,未格式化;
 -n               use `null` as the single input value;
 -e               set the exit status code based on the output;
 -s               read (slurp) all inputs into an array; apply filter to it;
 -r               output raw strings, not JSON texts;
 -R               read raw strings, not JSON texts;
 -C               colorize JSON;
 -M               monochrome (don't colorize JSON);
 -S               sort keys of objects on output;
 --tab            use tabs for indentation;
 --arg a v        set variable $a to value <v>;
 --argjson a v    set variable $a to JSON value <v>;
 --slurpfile a f  set variable $a to an array of JSON texts read from <f>;
 --rawfile a f    set variable $a to a string consisting of the contents of <f>;
 --args           remaining arguments are string arguments, not files;
 --jsonargs       remaining arguments are JSON arguments, not files;
 --               terminates argument processing;

總結(jié)

1、Python命令對json字符串進(jìn)行格式化
python -m json.tool python.py 			#與下面這條命令等價
cat python.py | python -m json.tool		#與上面這條命令等價

2、jq命令對json字符串進(jìn)行格式化
yum -y install epel-release				#要安裝epel源
yum install  jq -y						#安裝jq命令
jq . python.py							#與下面命令等價,有個點(diǎn).號
cat python.py | jq .					#與上面命令等價,有個點(diǎn).號

到了這里,關(guān)于linux下json字符串格式化、解決json.tool中文亂碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python 的字符串格式化指南

    Python 中控制字符串格式通常有三種形式: % 占位符(格式化符) str.format() 函數(shù) f-string 內(nèi)嵌式 Python 最先開始格式化字符串是用 %,但它的致命缺點(diǎn)是支持的類型有限制,只支持 int,str,double 這三種類型,從而導(dǎo)致其他所有類型只能轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)為這幾個類型,還有如果

    2024年02月08日
    瀏覽(23)
  • 第33講:Python格式化字符串時使用字典傳遞字符串

    在前面對字符串進(jìn)行格式化輸出時,傳遞被格式化的字符串時都是單個的,如果想要對字典中Key對應(yīng)的Value進(jìn)行格式化輸出,常規(guī)的方法如下:

    2023年04月24日
    瀏覽(36)
  • 淺談非棧上格式化字符串

    淺談非棧上格式化字符串

    這里先淺分析修改返回地址的兩種打法,分別是\\\"諸葛連弩\\\"和”四馬分肥“ 本文例題 以陜西省賽easy_printf為主 簡單看一看程序 需要先過一個判斷然后進(jìn)入vuln 進(jìn)入后 有一個13次的循環(huán) 可以讓我們操作 第一步 肯定要先leak出棧地址 程序基地址和libc基地址 第二步 修改ret地址

    2024年02月14日
    瀏覽(29)
  • Python字符串格式化 (%操作符)

    在許多編程語言中都包含有格式化字符串的功能,比如C和Fortran語言中的格式化輸入輸出。在Python中內(nèi)置有對字符串進(jìn)行格式化的操作符是\\\"%\\\"。 模板 格式化字符串時,Python使用一個字符串作為模板。模板中有格式符,這些格式符為真實(shí)值預(yù)留位置,并說明真實(shí)數(shù)值應(yīng)該呈現(xiàn)的

    2024年02月14日
    瀏覽(26)
  • 格式化字符串你都懂了嗎

    格式化字符串你都懂了嗎

    今天跟大家聊聊字 符串的格式化 這部分內(nèi)容。乍一聽“ 格式化 ”這三個字,有的初學(xué)者可能會懵:難道這是要清空字符串的節(jié)奏? 其實(shí)不是的,恰恰相反,格式化字符串是為了讓字符串變的更美觀、更靈活。接下來就給大家詳細(xì)介紹格式化字符串的概念以及具體用法。 格

    2024年02月04日
    瀏覽(21)
  • Python 用戶輸入和字符串格式化指南

    Python 用戶輸入和字符串格式化指南

    Python 允許用戶輸入數(shù)據(jù)。這意味著我們可以向用戶詢問輸入。在 Python 3.6 中,使用 input() 方法來獲取用戶輸入。在 Python 2.7 中,使用 raw_input() 方法來獲取用戶輸入。以下示例要求用戶輸入用戶名,并在輸入用戶名后將其打印在屏幕上: Python 3.6: Python 2.7: 為了確保字符串按預(yù)

    2024年02月05日
    瀏覽(38)
  • 格式化字符串走過的坑 pwn109

    格式化字符串走過的坑 pwn109

    格式化字符串走過的坑 pwn109 今天做的一道題有一個坑我調(diào)試半天終于打通了,格式化字符串的坑,確實(shí)不少,東西也比較多容易忘記,怎么說呢,功夫在平時,經(jīng)驗(yàn)少了 老規(guī)矩先看一下保護(hù) Full RELRO意味著got不能修改也就是不能通過格式化字符串漏洞來改got表,但是nx保護(hù)關(guān)

    2024年04月08日
    瀏覽(31)
  • 【Python入門篇】——Python基礎(chǔ)語法(字符串格式化,表達(dá)式格式化和數(shù)據(jù)輸入)

    【Python入門篇】——Python基礎(chǔ)語法(字符串格式化,表達(dá)式格式化和數(shù)據(jù)輸入)

    作者簡介: 辭七七,目前大一,正在學(xué)習(xí)C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄: Python入門,本專欄主要內(nèi)容為Python的基礎(chǔ)語法,Python中的選擇循環(huán)語句,Python函數(shù),Python的數(shù)據(jù)容器等。 歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!???? 目前通過%符號占位

    2024年02月05日
    瀏覽(30)
  • Godot 4 源碼分析 - 增加格式化字符串功能

    Godot 4 源碼分析 - 增加格式化字符串功能

    Godot 4的主要字符串類型為String,已經(jīng)設(shè)計得比較完善了,但有一個問題,格式化這塊沒怎么考慮。 String中有一個format函數(shù),但這個函數(shù)只有兩個參數(shù),這咋用? 查找使用例子,都是這種效果 一看就懵。哪里有之前用的帶%s %d...之類的格式化用得舒服。 動手實(shí)現(xiàn)一個 提供s

    2024年02月14日
    瀏覽(28)
  • 9.Python從入門到精通—Python 字符串格式化,三引號,Unicode 字符串

    Python中的字符串格式化是指將一個字符串中的占位符替換為指定的值。Python中有多種字符串格式化的方法,以下是其中的幾種常見方法: 使用百分號(%)進(jìn)行字符串格式化 使用百分號(%)進(jìn)行字符串格式化是Python中最早的字符串格式化方法。它的基本語法如下: 其中,格

    2024年03月20日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包