亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

JSON與XML格式化比對(duì)三板斧:jq、xmllint與自建腳本實(shí)戰(zhàn)

JSON與XML格式化比對(duì)三板斧:jq、xmllint與自建腳本實(shí)戰(zhàn) 簡(jiǎn)介面向開發(fā)者的輕量JSON/XML格式化與比對(duì)工具包適合前端、后端及測(cè)試人員在日常接口調(diào)試、配置核查、日志分析中快速校驗(yàn)數(shù)據(jù)格式、定位錯(cuò)誤并對(duì)比差異。工具提供實(shí)時(shí)格式校驗(yàn)?zāi)軠?zhǔn)確顯示錯(cuò)誤所在行號(hào)與列號(hào)一鍵格式化、復(fù)制和清空功能讓數(shù)據(jù)整理更高效JSON比對(duì)模塊采用雙面板設(shè)計(jì)支持行號(hào)顯示、層級(jí)折疊、差異可視化分析并可交換左右數(shù)據(jù)、窗口最大化便于處理復(fù)雜嵌套結(jié)構(gòu)。壓縮包約37KB共7個(gè)文件以HTML、CSS、JavaScript為主其中HTML/CSS負(fù)責(zé)頁面與界面樣式JS實(shí)現(xiàn)格式化與差異比對(duì)核心邏輯另附JSON配置、PNG圖標(biāo)及Markdown說明文檔整體結(jié)構(gòu)清晰既可直接使用也便于參考改造。已有244人學(xué)習(xí)下載適合需要頻繁處理接口數(shù)據(jù)、配置文件和日志的開發(fā)人員使用。1. 為什么這三個(gè)小工具值得花時(shí)間折騰json 格式化工具、xml 格式化工具、json 數(shù)據(jù)比對(duì)工具這三個(gè)東西單獨(dú)看都是小工具湊在一起就是一套本地?cái)?shù)據(jù)處理三板斧。接口聯(lián)調(diào)時(shí)最磨人的場(chǎng)景不是邏輯寫錯(cuò)而是兩邊各返回一坨擠成一行、沒有換行的 JSON 和 XML肉眼盯十分鐘也看不出差異等你把差異找到了往往發(fā)現(xiàn)只是鍵的順序不同根本不是 bug。這套三件套解決的就是這類問題先格式化把結(jié)構(gòu)攤開再用可靠的比對(duì)方式找出真實(shí)差異最后把同一個(gè)流程固化成一個(gè)命令下次遇到直接跑。這套東西適合誰后端排查接口響應(yīng)、前端聯(lián)調(diào) mock 數(shù)據(jù)、數(shù)據(jù)工程師檢查配置文件、以及所有被肉眼 diff折磨過的人。不需要裝大型 IDE命令行和一個(gè)小腳本就夠用。下面我把原理、最小命令、自建比對(duì)腳本和踩過的坑按順序講清楚。2. 格式化與比對(duì)的底層邏輯先搞清楚工具在替你做什么2.1 JSON 格式化到底在格式化什么JSON 格式化不是簡(jiǎn)單地在逗號(hào)后面加個(gè)換行它背后一定有一個(gè)解析器先把文本讀成內(nèi)存里的結(jié)構(gòu)體再把這個(gè)結(jié)構(gòu)體重新序列化輸出。這個(gè)過程至少有四件事縮進(jìn)排版、鍵序調(diào)整可選、字符串轉(zhuǎn)義還原、以及最重要的語法校驗(yàn)。一段非法 JSON讓格式化工具跑一遍會(huì)直接報(bào)錯(cuò)所以格式化工具天然是校驗(yàn)工具。理解這一點(diǎn)你就明白為什么格式化和查詢經(jīng)常出現(xiàn)在同一個(gè)工具里。像 jq 這種命令行的 json 查詢函數(shù)本質(zhì)是在解析后的結(jié)構(gòu)體上做取值、過濾和映射而不是像正則那樣硬啃字符串。很多人遇到spark 中讀取 json 報(bào)錯(cuò)的第一反應(yīng)是去改 SQL其實(shí)更快的辦法是先把 source 文件拿下來格式化一遍看 JSON 解析器在哪一行吐因?yàn)?spark 讀 json 時(shí)用的也是解析器解析失敗的原因絕大多數(shù)是被引號(hào)、末尾逗號(hào)或壞 Unicode 搞崩的。另一個(gè)容易忽略的點(diǎn)JSON 的鍵順序在語義上沒有意義{a:1,b:2}和{b:2,a:1}是同一個(gè)對(duì)象。所以一個(gè)合格的格式化工具應(yīng)該允許你選擇是否排序鍵而一個(gè)合格的比對(duì)工具應(yīng)該默認(rèn)忽略鍵序差異。這個(gè)原則貫穿后面所有操作。2.2 XML 格式化與標(biāo)簽語義dom4j 那套規(guī)則XML 格式化比 JSON 麻煩一點(diǎn)因?yàn)?XML 除了節(jié)點(diǎn)嵌套還有屬性、命名空間、CDATA、實(shí)體引用這些東西。格式化工具要做的是調(diào)整文本排版但絕不能動(dòng)標(biāo)簽的配對(duì)關(guān)系。你寫一個(gè) Java 程序用 dom4j 解析 XML步驟無非是加載 Document、遍歷 Node、再重新輸出命令行里的 XML 格式化工具做的也是同一件事只是把重新輸出這一步變成了帶縮進(jìn)的序列化。所以我建議你把格式化工具當(dāng)成一個(gè)解析器的排版外皮來用它能排版前提是文件能被解析。經(jīng)常有人說xml 格式文件沒有標(biāo)簽怎么辦這種文件本質(zhì)上是純文本標(biāo)簽都沒了說明它或者根本不是 XML或者標(biāo)簽在傳輸中被某個(gè)環(huán)節(jié)吃掉了。格式化工具不能憑空補(bǔ)標(biāo)簽它只能幫你把已有的結(jié)構(gòu)攤開。先認(rèn)清這一點(diǎn)排查方向就不會(huì)跑偏。XML 里還有一個(gè)容易踩的語義細(xì)節(jié)屬性順序不影響語義CDATA 里的內(nèi)容則是原樣保留的。所以一個(gè)可靠的 XML 格式化工具必須做到兩點(diǎn)——不重排屬性順序不破壞 CDATA 內(nèi)容。市面上有些在線工具會(huì)把屬性按字典序重排看起來整齊了實(shí)際上改變了原始文檔的指紋做簽名校驗(yàn)時(shí)就會(huì)翻車。2.3 比對(duì)工具的核心文本 diff 與結(jié)構(gòu) diff 的差距先說文本 diff就是diff命令干的事逐字節(jié)或逐行比較找到第一處不同就報(bào)出來。對(duì)代碼文件它很合適對(duì) JSON 和 XML 就經(jīng)常誤報(bào)。兩個(gè) JSON 語義完全一樣只要鍵順序不同diff會(huì)報(bào)出一大片紅色兩個(gè) XML 只要標(biāo)簽間的空白文本節(jié)點(diǎn)不一樣也會(huì)到處標(biāo)紅。結(jié)構(gòu) diff 是另一條路先把兩邊分別解析成樹再遞歸比較對(duì)應(yīng)節(jié)點(diǎn)。這樣鍵序變化不會(huì)誤報(bào)數(shù)字 1 和 1.0 也能靠類型規(guī)則區(qū)分。市面上好的 json 數(shù)據(jù)比對(duì)工具都走結(jié)構(gòu) diff但它比文本 diff 貴——要先完整解析而且對(duì)數(shù)組順序怎么處理是個(gè)策略問題是把數(shù)組當(dāng)成有序列表逐項(xiàng)比較還是當(dāng)成無序集合做匹配大多數(shù)場(chǎng)景里數(shù)組是有序的我建議比對(duì)工具默認(rèn)按順序比。選型上我的建議是分三層最小范圍用jq -S排序后接diff這能覆蓋七成簡(jiǎn)單場(chǎng)景復(fù)雜嵌套結(jié)構(gòu)用自寫遞歸比對(duì)腳本能輸出精確的差異路徑實(shí)在要給人看的可視化比對(duì)才上圖形化工具。不要一上來就裝大客戶端命令行三件套在你服務(wù)器上也能用。3. 用 jq 和 xmllint 跑通格式化最小命令與參數(shù)對(duì)照3.1 JSON 格式化最小命令jq 的縮進(jìn)與排序參數(shù)如果你的系統(tǒng)里有 jq沒有的話包管理器直接裝格式化就是一條命令的事。先看最小命令# 格式化輸出到標(biāo)準(zhǔn)輸出不做鍵排序 jq . raw.json # 按鍵名排序后再格式化常用于比對(duì)前的預(yù)處理 jq -S . raw.json # 自定義縮進(jìn)為 4 個(gè)空格讀取 json 數(shù)組文件也一樣適用 jq --indent 4 . raw.json邏輯說明.是 jq 的過濾器表示原樣取出整個(gè)文檔。jq 拿到這個(gè)過濾器后會(huì)把輸入解析成內(nèi)部結(jié)構(gòu)再按默認(rèn)的 2 空格縮進(jìn)輸出所以jq .就是最基礎(chǔ)的格式化命令。-S是--sort-keys的簡(jiǎn)寫會(huì)遞歸地按鍵名排序這個(gè)參數(shù)在比對(duì)場(chǎng)景里是核心——前面說過鍵序不影響語義排序后再 diff 就能消除一類假差異。--indent 4是給喜歡 4 空格縮進(jìn)的人準(zhǔn)備的不影響語義。參數(shù)說明如果只想校驗(yàn)不想看輸出用jq -e . file /dev/null-e會(huì)讓 jq 在解析失敗時(shí)返回非零退出碼方便寫進(jìn)腳本判斷。注意 jq 默認(rèn)輸出 UTF-8不會(huì)把中文轉(zhuǎn)成\uXXXX這點(diǎn)和后面要講的 Pythonjson.dumps正好相反。3.2 XML 格式化最小命令xmllint 的縮進(jìn)與編碼參數(shù)XML 這邊推薦xmllint它來自 libxml2 工具集基本是 Linux 和 macOS 都會(huì)自帶的。最小命令# 格式化輸出到標(biāo)準(zhǔn)輸出 xmllint --format raw.xml # 格式化并寫回另一個(gè)文件原文件保持不變 xmllint --format raw.xml --output pretty.xml # 指定輸出編碼避免中文亂碼 xmllint --format raw.xml --encode UTF-8 --output pretty.xml邏輯說明--format會(huì)重新縮進(jìn)所有節(jié)點(diǎn)把自閉合標(biāo)簽、換行、縮進(jìn)統(tǒng)一處理掉同時(shí)保留屬性順序和 CDATA 內(nèi)容。--output指定寫回的文件這是一個(gè)好習(xí)慣——不要讓工具直接覆蓋原文件萬一格式化失敗原文件還在。--encode UTF-8是處理中文的重要參數(shù)如果你的 XML 文件是 GBK 編碼不加這個(gè)參數(shù)輸出到終端會(huì)亂碼。參數(shù)說明如果你只是想校驗(yàn) XML 合法性用xmllint --noout file.xml它只報(bào)錯(cuò)不輸出。和 JSON 一樣格式化工具同時(shí)是校驗(yàn)工具xmllint遇到多個(gè)根節(jié)點(diǎn)、未閉合標(biāo)簽會(huì)直接報(bào)錯(cuò)并返回非零退出碼。順手提一句如果你在寫 Java用 dom4j 解析 XML 的步驟里最后 serializer 輸出的就是格式化后的文本本質(zhì)上和 xmllint 做的是同一件事。3.3 批量格式化與寫回文件先臨時(shí)文件再覆蓋單文件格式化學(xué)會(huì)后自然要做批量。這里有一個(gè)我踩過的坑千萬別直接在原文件上重定向。下面這個(gè)模式是安全的# 批量格式化當(dāng)前目錄下所有 json 文件 for f in *.json; do jq -S . $f $f.tmp mv $f.tmp $f done # 批量格式化所有 xml 文件先臨時(shí)文件再覆蓋 for f in *.xml; do xmllint --format $f --output $f.tmp mv $f.tmp $f done邏輯說明第一條命令把格式化結(jié)果寫到臨時(shí)文件只有 jq 成功退出保證退出碼為 0才用mv覆蓋原文件。這樣即使某個(gè)文件解析失敗原文件也不會(huì)被一個(gè)空文件或半截輸出覆蓋。第二個(gè)循環(huán)同理xmllint的--output指定臨時(shí)文件名成功后才覆蓋。參數(shù)說明批量處理前先確認(rèn)所有文件編碼一致混著 GBK 和 UTF-8 的目錄會(huì)讓這組命令產(chǎn)生亂碼輸出。另外這兩條命令對(duì)子目錄不生效需要遞歸的話把*.json換成find . -name *.json配合while read循環(huán)。這種先臨時(shí)文件再覆蓋的習(xí)慣能幫你省掉很多后悔藥。實(shí)際使用中我從網(wǎng)上下載接口樣例或 json 格式文件時(shí)第一步都是先跑一遍格式化看看結(jié)構(gòu)。在 spark 中讀取 json 之前也一樣先把下載的雜亂的 json 文件用jq .洗一遍能直接從報(bào)錯(cuò)行判斷壞數(shù)據(jù)在哪比在分布式環(huán)境里反復(fù) job 失敗快得多。4. 自建 JSON 數(shù)據(jù)比對(duì)腳本遞歸比對(duì)與差異路徑輸出4.1 為什么不能直接 diff鍵序與空白帶來的假差異先做一個(gè)實(shí)驗(yàn)兩個(gè)語義完全相同的 JSONdiff會(huì)怎樣報(bào)看下面這段echo {name:a,age:18} | jq -S . left.json echo {age:18,name:a} | jq -S . right.json diff left.json right.json正常執(zhí)行后沒有任何輸出因?yàn)閖q -S把兩個(gè)文件的鍵都排成了age在前、name在后文本完全一致。但如果去掉-S直接 diff你會(huì)看到兩行全被標(biāo)紅。這就是鍵序帶來的假差異。另一種假差異來自空白一個(gè)文件是 2 空格縮進(jìn)另一個(gè)是 4 空格縮進(jìn)diff會(huì)把每一行都當(dāng)成不同。所以我的結(jié)論是文本 diff 只能用于已知兩邊已被相同規(guī)則格式化過的 JSON。滿足這個(gè)前提后jq -S加diff是最快的冒煙比對(duì)方式。但它有個(gè)致命盲區(qū)——數(shù)組順序不同時(shí)它只會(huì)告訴你在哪一行不同而不會(huì)告訴你哪個(gè)元素在左邊有右邊沒有。這個(gè)問題需要結(jié)構(gòu)比對(duì)來解決。4.2 Python 遞歸比對(duì)腳本處理嵌套、數(shù)組與類型我自用的比對(duì)腳本核心是一個(gè)遞歸函數(shù)輸出的是可讀的差異路徑比如root.items[2].price。下面是這個(gè)腳本的完整版import json import sys def diff_json(a, b, pathroot): # bool 是 int 的子類先排除避免 True 和 1 被判為同類 if isinstance(a, bool) ! isinstance(b, bool): yield f{path}: type {type(a).__name__} ! {type(b).__name__} return # 數(shù)字類型統(tǒng)一成 float 比較1 和 1.0 視為相等 if isinstance(a, (int, float)) and isinstance(b, (int, float)): if float(a) ! float(b): yield f{path}: {a!r} ! {b!r} return if type(a) ! type(b): yield f{path}: type {type(a).__name__} ! {type(b).__name__} return if isinstance(a, dict): for k in sorted(set(a.keys()) | set(b.keys())): if k not in a: yield f{path}.{k}: missing in left elif k not in b: yield f{path}.{k}: missing in right else: yield from diff_json(a[k], b[k], f{path}.{k}) elif isinstance(a, list): if len(a) ! len(b): yield f{path}: length {len(a)} ! {len(b)} for i, (x, y) in enumerate(zip(a, b)): yield from diff_json(x, y, f{path}[{i}]) else: if a ! b: yield f{path}: {a!r} ! {b!r} if __name__ __main__: if len(sys.argv) ! 3: print(usage: jsondiff.py left.json right.json) sys.exit(2) with open(sys.argv[1], encodingutf-8) as f1, \ open(sys.argv[2], encodingutf-8) as f2: left json.load(f1) right json.load(f2) diffs list(diff_json(left, right)) if diffs: print(\n.join(diffs)) sys.exit(1) print(same)邏輯說明函數(shù)從根節(jié)點(diǎn)開始遞歸遇到 dict 就取兩邊鍵的并集排序后逐個(gè)比較缺失的鍵單獨(dú)報(bào)遇到 list 先比長(zhǎng)度再按索引逐項(xiàng)比較其余類型直接比值。所有差異都用生成器yield拋出來主函數(shù)統(tǒng)一收集后打印。退出碼是 1 表示有差異0 表示相同方便接進(jìn) shell 腳本。參數(shù)說明腳本第 10 行到第 15 行處理了最常見的一類誤報(bào)——1和1.0在 Python 里分別被解析成int和float但 JSON 語義上它們相等所以統(tǒng)一轉(zhuǎn)成float比較。bool單獨(dú)排除是因?yàn)門rue 1在 Python 里成立不排除的話true和1會(huì)被誤判為相等。數(shù)組順序按重要差異處理只要順序不同就報(bào)這是大多數(shù)接口聯(lián)調(diào)場(chǎng)景想要的。4.3 兩個(gè)實(shí)戰(zhàn)變體接口響應(yīng)比對(duì)與 json merge conflict 合并復(fù)查第一個(gè)變體是接口響應(yīng)比對(duì)。把兩個(gè)環(huán)境的接口響應(yīng)各自存成文件然后跑腳本curl -s https://api-a.example.com/v1/orders -H Authorization: Bearer $TOKEN resp-a.json curl -s https://api-b.example.com/v1/orders -H Authorization: Bearer $TOKEN resp-b.json python3 jsondiff.py resp-a.json resp-b.json腳本會(huì)輸出類似root[3].total: 12.5 ! 12.0的行直接定位到數(shù)組第 4 個(gè)元素的total字段差異。這比截兩張圖左右對(duì)比快十倍。注意接口響應(yīng)里如果有時(shí)間戳這種必然變化的字段比對(duì)前先過濾掉否則每次都有差異。第二個(gè)變體是多人協(xié)作時(shí)遇到的 json merge conflict。Git 合并兩個(gè)都改過package.json或配置文件的版本時(shí)會(huì)留下沖突標(biāo)記。手工解決沖突后拿這個(gè)腳本把我合出來的結(jié)果和本來的預(yù)期結(jié)果做一次比對(duì)能確認(rèn)合并過程中沒有意外丟掉字段。做法是把沖突解決后的文件存成merged.json把主干版本存成base.json然后python3 jsondiff.py base.json merged.json輸出全是missing in right就說明手動(dòng)合并時(shí)丟了內(nèi)容。這個(gè)場(chǎng)景里腳本的價(jià)值不是替代 Git 的 diff 工具而是給手工合并結(jié)果一個(gè)客觀的驗(yàn)收出口。我習(xí)慣在提交前跑一遍比反復(fù)肉眼確認(rèn)踏實(shí)得多。5. 格式化與比對(duì)的 5 個(gè)翻車現(xiàn)場(chǎng)與避坑清單5.1 現(xiàn)象JSON 中文被轉(zhuǎn)成 \uXXXX格式化之后 JSON 里的中文全變成\u4e2d\u6587這種形式。功能上沒錯(cuò)但沒法直接讀。原因某些格式化工具默認(rèn)啟用ASCII 安全輸出把非 ASCII 字符全部轉(zhuǎn)義。Python 的json.dumps默認(rèn)ensure_asciiTrue就是這個(gè)行為jq 在加了-a--ascii-output時(shí)也會(huì)這樣。另一個(gè)來源是復(fù)制到某些在線工具后它默認(rèn)按轉(zhuǎn)義模式輸出。解決用json.dumps(data, ensure_asciiFalse)寫腳本用 jq 時(shí)不加-a。如果你手里已經(jīng)有一個(gè)被轉(zhuǎn)義的文件用 jq 重新格式化一次會(huì)還原成中文因?yàn)?jq 解析時(shí)會(huì)自動(dòng)把\uXXXX解碼回字符。記住這條規(guī)則格式化工具轉(zhuǎn)義不轉(zhuǎn)義只是序列化配置不是數(shù)據(jù)損壞。5.2 現(xiàn)象XML 格式化后內(nèi)容全部擠在一行把 XML 丟給 xmllint 后發(fā)現(xiàn)輸出確實(shí)縮進(jìn)了但所有內(nèi)容還是在同一行上看起來跟沒格式化一樣。原因最常見的是你在命令后面又加了一層管道處理比如xmllint --format raw.xml | tr -d \n把 xmllint 辛苦加的換行全刪了。另一個(gè)隱蔽原因是文件里的換行是#10;實(shí)體轉(zhuǎn)義解析后是文本內(nèi)容里的真實(shí)換行不是排版換行這種文件格式化后內(nèi)容連在一起是正常的因?yàn)樗緛砭蜎]有標(biāo)簽間空白。解決別在管道里二次處理直接xmllint --format raw.xml --output pretty.xml寫文件看。如果文件本身沒有標(biāo)簽間空白你想讓它可讀只能先插入縮進(jìn)空白——但這時(shí)候修改的是文檔樹有可能影響依賴空白節(jié)點(diǎn)的下游邏輯。我的習(xí)慣是格式化只用于人眼排查不與簽名校驗(yàn)共用同一份輸出。排查完還是用原始文件干活。5.3 現(xiàn)象嵌套 JSON 比對(duì)誤報(bào)差異用自寫腳本比對(duì)時(shí)報(bào)出一堆root.a.b: 1 ! 1.0或者root.c: True ! 1這種差異但業(yè)務(wù)上明明是等價(jià)的。原因JSON 解析器對(duì)數(shù)字的處理不一致。Python 的json.loads把1解析成int把1.0解析成float而 JavaScript 的解析器一律變成number沒有類型區(qū)別。所以在 Python 里直接比較就會(huì)出現(xiàn)1 ! 1.0。True和1的坑更隱蔽因?yàn)閎ool是int的子類True 1成立反過來會(huì)讓你漏掉真正的類型差異。解決按前面腳本里的做法先排除 bool再把 int 和 float 統(tǒng)一成float比較。如果你不想改腳本就在生成比對(duì)文件時(shí)把兩邊都過一遍jq——jq 會(huì)把1和1.0在內(nèi)部統(tǒng)一處理輸出格式一致后再比。但注意 jq 這條路線對(duì) bool 不生效true和1在 jq 里仍然是不同類型。5.4 現(xiàn)象接口返回的 XML 帶 BOM 或多根節(jié)點(diǎn)xmllint 報(bào)錯(cuò)提示parser error或者Extra content at the end of the doc。文件看起來是合法 XML但就是過不了。原因從 Windows 環(huán)境拿到的 XML 文件開頭帶了一個(gè) UTF-8 BOMEF BB BFxmllint 在某些配置下會(huì)把 BOM 當(dāng)成內(nèi)容讀進(jìn)去導(dǎo)致解析失敗。另一個(gè)常見原因是工具或接口把多個(gè) XML 文檔拼在一個(gè)文件里返回了比如一個(gè)列表接口把每條記錄各吐了一個(gè) XML 根節(jié)點(diǎn)拼在一起就成了多根節(jié)點(diǎn)文檔。解決去 BOM 用一行sed -i 1s/^\xEF\xBB\xBF// file.xml。多根節(jié)點(diǎn)的情況如果文件是多個(gè) XML 文檔拼接可以用xmllint --recover --format file.xml嘗試恢復(fù)但更干凈的辦法是手工包一個(gè)外層根節(jié)點(diǎn)比如# 把多根節(jié)點(diǎn)包進(jìn)一個(gè) root 標(biāo)簽 { echo root; cat broken.xml; echo /root; } | xmllint --format -注意這只能用來排查包根節(jié)點(diǎn)后的文檔和原始語義不等價(jià)別拿它當(dāng)正式數(shù)據(jù)。至于xml 格式文件沒有標(biāo)簽怎么辦那種情況文件里根本沒有字符的那就不是 XML格式化工具無能為力先回頭查生成方。5.5 現(xiàn)象大文件格式化卡死幾十 MB 的 JSON 或 XML 丟給 jq、xmllint 后CPU 飆滿等了幾分鐘沒反應(yīng)最后被系統(tǒng) OOM 殺掉。原因這兩個(gè)工具都要把完整文檔讀入內(nèi)存再重建結(jié)構(gòu)JSON 的解析樹在內(nèi)存里通常是文件體積的幾倍到十幾倍。你本地格式化一個(gè) 200MB 的 json 數(shù)組內(nèi)存占用輕松到 2GB 以上。這不算工具 bug是結(jié)構(gòu)化數(shù)據(jù)的固有開銷。解決格式化前先看文件大小超過 50MB 就換個(gè)策略。JSON 用小樣本先驗(yàn)證格式或者用流式解析庫逐條讀XML 用xmllint --noout只校驗(yàn)不排版省掉序列化那部分開銷。在 spark 中讀取 json 的大文件場(chǎng)景正確做法是讓 spark 自己去解析不在本地先格式化——分布式引擎對(duì)大數(shù)據(jù)量的處理設(shè)計(jì)就是為這個(gè)場(chǎng)景存在的。記住格式化工具是給人眼看的不是給機(jī)器跑批的。6. 把三件套接進(jìn)日常調(diào)試一個(gè) 20 行的入口腳本前面講了原理和命令最后把這些落成一個(gè)我每天都在用的入口腳本。它做的事情只有三件校驗(yàn)、格式化、比對(duì)全部基于退出碼判斷結(jié)果能直接粘到~/.bashrc或~/.zshrc里# JSON 校驗(yàn)成功輸出 ok失敗輸出錯(cuò)誤并返回 1 jsoncheck() { jq -e . $1 /dev/null echo json ok || echo json broken; } # XML 校驗(yàn)只解析不輸出 xmlcheck() { xmllint --noout $1 echo xml ok || echo xml broken; } # JSON 比對(duì)調(diào)用前面的 jsondiff.py有差異打印路徑并返回 1 jsondiff() { python3 $HOME/bin/jsondiff.py $1 $2; } # 一鍵格式化輸出到 .pretty 文件不動(dòng)原文件 jsonpretty() { jq -S . $1 $1.pretty; } xmlpretty() { xmllint --format $1 --output $1.pretty; }用法就是jsoncheck resp.json、jsondiff left.json right.json有差異時(shí)腳本把路徑一行行列出來退出碼可以接進(jìn) CI 或者 pre-commit 鉤子。我還習(xí)慣在比對(duì)前先做一次jq -S預(yù)處理讓鍵序一致這樣即使萬一用到diff也不會(huì)被排序差異干擾。驗(yàn)證方式很簡(jiǎn)單自己造兩個(gè)只差一個(gè)字段值的 JSON 文件跑一遍腳本確認(rèn)輸出路徑準(zhǔn)確再把它們排序后跑一遍確認(rèn)退出碼是 0。這套東西陪我處理過很多次看起來一樣、實(shí)際不一樣的接口問題?,F(xiàn)在我的習(xí)慣是任何一次接口聯(lián)調(diào)拿到響應(yīng)先格式化結(jié)構(gòu)看清了再比對(duì)比對(duì)出差異先看路徑路徑指向的字段往往比我想象的更靠?jī)?nèi)層。格式化工具最大的價(jià)值不是排版好看而是讓差異無處可藏。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
二区熟妇韩日| 精品少妇一区二区三区在线视频| 91久热| 精品大久久| 国产精品嫩草影院免费| 国产精品久久| 亚洲情色 欧美| 黄色高清久久无码依人| 岛国小电影| 在线观看中文av字幕| 伊人国产成人av网站| 欧美天堂第二区| 不卡超碰护士AV在线免费播放| 91小视频| 能在线播放的国产三级| 在线a亚洲视频播放在线| 操一对老熟妇爽上天视频| 91欧美另类| 人人喜人人妻| 欧美激情视频一区二区三区不卡| 九九九久千久久激情蜜桃在线看 | Aa东京男人的天堂| 超碰在线第一页| 男人 天堂 日 亚洲| 91操碰| 91GD.COM| 久草福利在线资源站| 性影在线视频| 精品欧美А∨无码黑人大荫蒂| 蜜桃av色偷偷av老熟女| 国产精品不卡高清在线观看| 中文字幕一区二区三区字幕| 极品欧美一区二区三区| 精品亚洲国产成人精品| 久久久精品日本一道| 亚洲高清无码AAA久久久精品| 视频黄色国产一级| 人妻一区视频| 色噜噜人妻丝袜a∨先锋影| 永久免费发布性爱网| 日本成人A片网站| av一区二区三区不卡| 日韩激情无码影院| 深夜激情无码| 熟妇熟女亚洲天堂网| 日韩国语字幕| 素人无码中文字幕| 亚洲欧美一区二区网址| 天天躁日日躁xxxxx| 又大又长又粗又爽又黄| 操逼操网| 九九热精品| 伊人青青一区成人视频在线观看区| 青娱乐 成人娱乐在线| 动漫片子网站3黄| 99啪啪视频| 10000部十八禁看电影| 日韩电影天堂视频一区二区| 乱色老一区二区三区的观看方式| 午夜精品久久99蜜桃的功能章节| 欧美劲爆视频一区二区| 暖暖精品二区三区观看| 9久精品视频在线观看| 午夜AV污污污| 偷拍亚洲| 一区二区三区精品视频| 91蜜臀熟女| 97这里都是精品| 亚洲欧美综合图片| 亚洲婷婷综合网| 美國A片| 深爱五月婷婷| 国产精品。| 男人的天堂三级| 亚洲婷婷丁香在线| 激情五月天视频| 97超碰69| 乱操9999| 性爱av在线免费观看| 天天爽爽爽爽| 日韩欧美亚欧在线视频| 在线视频日韩欧美国产| 91扒丝袜综合在线| 麻豆AV一区二区天美传媒| 在线播放成人高清免费视频| 中文字幕在线观看丝袜| 97se综合| 蜜臀AV秘一区翔田千里| 伊色综合天堂色97| 亚洲中字慕不卡| 国产精品亚洲一级av第二区| 五月婷婷综合网| 亚洲国产青青| 无码不卡八戒| 日韩性色b| 激情文学小说一区二区| 盗摄女人妻在线| 9热9热综合网| 国产后入| 日产国产精品中文久久婷婷| 狠狠爱综合网| 久久精品人体| 欧美天天干| 久久久久久久国产视频| 日韩无码AB| 一区二区乱码福利| 国产黄a三级三级三级av在线看| 91女优在线观看| 国产不良强奸视频免费看| 丁香六月婷婷久久综合| 欧美黑人熟妇精品91| 狠狠色婷婷7777久| 97爱亚洲| 9久久9综合| 久操精品| juliaann丝袜大战黑鬼| 国产精品人妻熟女aⅴ| 九九拍拍精品视频在线播放 | 欧美操人| 欧美性性性| 色999亚洲人成色| 国产剧情在线| 9999伦理视频| 搞中出久久| 大乔未久88一区| 精品人妻中文字幕4399| 涩涩久久精品| 无码视频黄色网战| 天天欲望网| 99性爱| 天堂男人网| 婷婷四五区| 亚洲欧美日韩偷拍色图| 一区久久久二区| 日本孕妇一区二区视频操逼免费看 | 无码操逼网| 久久、1234| 中文字幕中文字幕一区二区| 99re综合伊人| 红杏大香蕉| 中文字幕精品免费一区二区| 青青草好吊| av国产无码| 天天综合青苹果| 熟妇高潮一区二区免费视频| 日韩中文字幕人妻视频| 日韩欧美中文字幕搭讪巨乳美人妻视频| 亚洲精品亚洲人成人网| 国产精品免费久久久久久久久久| 国产第二页| 精品久久97| 秋霞一级A片黄色视频| 国产91影院| 五月天伊人| 强奸乱伦Av网| 少妇被c 黄 免费观看| 99热aaa| 亚洲蜜乳av| 竹菊一区二区三区AV线| 在线 亚洲 网爆 自拍| 色官网色综合| 人人妻人人玩人人澡人人爽| 亚洲永久AV无码精品秋霞| 日本一区二区三区四区免费观看| 好爽视频在线观看视频| 欧美熟女丝袜| 男人天堂站| 日操粉逼逼| 国产熟妇 码视频户外直播| 亚洲国产亚洲天堂| 一个人在线看的黄色电影网站| 99热在线观看| www.av在线视频| 99色网| 国产福利在线视频网站| 欧美亚洲中文| 欧美亚洲首页| 美国三级日本三级久久99| 狼人综合婷婷激情四射 | 九九综合久久| 一级久久性爱视频| 啪啪视频亚洲第一| 激情天天视频| 欧美片第一页| 少妇久久久| 久久久精品,3| 伊人久久AV诱惑悠悠| 人妻天天爽夜夜爽2| 九九精品美女高溯喷水| 99热97| 日本99视频| 亚洲欧洲日韩国产自在线| 高清无码久操视频| 操逼日批| 人妻 中文 日韩| 国产精品毛片?v一区二区三区 | 国产精品小视频一区二区三区| 全球成人中文在线| 99性爱视频| 丁香九月激情| 操逼日韩无码 | 一本大道久| 91青青在线视频| 91精品免费| 91成人社区| 青娱乐手机日韩在线视频| 有码免费观看| 一区二区精品更新提醒| 一道α片欧美| 在线毛片片免费观看| 张柏芝国产一区在线观看| 欧美97| 久久精品人妻一区| 国产一级内射高清视频 | 91xingse| 打av高清| 六月婷婷一区二区三区| 男人的天堂日韩| 欧美亚洲色的图| 久久久久久免费电影| 麻豆传媒一区二区在线观看| 大香蕉一人| 少妇色欲综合网2| 久草成人| 日韩综合成人免费视频| 日本视频一区二区三区| 日本一区二区三区欧美日韩中文字幕| 闷骚老熟女15P| 免费97视频| 插B在线观看| 91亚洲综合在线| 少妇一区二区三区| 中文字幕一区二区日韩网| 一区二区影院| 日韩伦理久 久久 清纯| 欧美亚州色的图| 亚州色综合| 亚洲欧洲av影音| 久热香蕉精品在线视频| 香蕉一区二区三区在线视频| 一区二区三区在线日韩影院观看| 干超碰碰熟女| 可以在线观看AV的网站| 麻豆人妻精品一区二区| 欧美极品色| 97在线观看免费视频| 黄色激情电影在线观看| 亚洲国产第一页综合视频| 欧美老妇综合网| 哑洲在线| 亚川综合视频| 久久久草成人网站久久久草成人久久久草久久久 | 一区AV| AV污污污污| 欧美日韩99精品麻豆传媒| 91爰爱欧美| 特色a在线上| 九九久久一区二区伦理| 欧美少妇第一页| 青青草影视蜜久久| 不卡一区二区日本视频| 日本亚洲vr欧美不卡高清专区| 中文久久96| 天天综合网日韩| 欧美一级A片在线看视频性色| 中文字幕在在线观看网站| 国产三级中文字幕粉嫩| 少妇3P性爱自拍| 日产狠狠干| 色97综合中文字幕| 亚欧性爱无码| 亚洲丝袜色图| 天天干人人看综合| 日日操天天操| 9久9久| 亚洲欧美在线观看免费| 女一区二区| 97超碰香蕉| 女人高潮大叫一级毛片| 麻豆色99999| 日韩欧美一级特黄大片| 日本精品免费一区二区三区四区| 亚洲97在线| 五月丁香啪啪啪| 少妇精品久久久八区九区| Av手机版天堂网| 肥臀熟女福利视频一区二区| 国产日韩欧美中文在线播放| 青娱乐蜜桃臀AV色婷| 日韩视频中文字幕| 国产精品久久久久久夜夜夜| 91久久| 97操97色| 中文字幕,人妻,日韩| 日韩中字av一区| 亚洲无992tv| 亚洲另类久操网| 欧美第一页| 97蜜桃综合| 男女啪啪网站免费视频| 日韩三级网址| Sekablack无码一区| 蜜桃精品一区二区三区ww| 久久一二三四| 亚洲第一二区另类图| 巨爆乳一区二区爆乳区| 九九九九一级| 五月天婷婷欧美三区| 亚洲Av诱惑| 天天看天天综合成人网| 久久av无码| 久久久久久91香蕉国产| 中文字幕jul-617人妻熟女| 一二三四区电影| 玖玖97综合| 精品国产乱码| 蜜桃臀一区二区三区久久| WWW黄片COM| 亚洲不雅视频1区二区| 97超碰国产精品| 性无码专区2020| 亚洲色图 图片| 亚洲av淫乱| 日韩欧美女求操每天更新| 亚洲第一综合| 午夜视频久久久久一区| 97精品视频在线| 亚洲一区深夜| 男人a天堂手机在线版| 亚洲欧美国产精品久久久久久久| 按摩中文字幕| 丁香婷婷大香蕉| 综合国产影视三级| 国产在线激情| 日韩欧美天天爽爽爽天天爽爽| 国产67194| 成人自拍三级在线观看| 91 偷| 四虎免费看黄| 欧美日韩高潮喷水91| 久久伊人亚洲AV无码网站| 欧美性少妇| 91丝袜激情在线| 在线不卡视频| 加勒比在线视频一区二区三区| 久久综合97| 老熟妇一区二区三区啪啪| 国产剧情一区在线观看| 伊人色综合网电影| 超碰人人操97碰| 91精片| 超碰 欧美| 欧色综合| 色九九九| 麻豆60秒| 女人天堂AV五区在线| 亚洲av无线观看| 欧美一二三级精品在线| 久久大黄片| 久久久一二三四区| 久久精品电影| 亚洲性综合| 97中文字幕色| 九九玖玖精品| 久久国产精品一级二级三级| 91爱综合| 日韩人妻精品久久久久| 色噜噜综合网| 99精品久久| 亚洲精品日日夜夜52| 亚洲精品无码成人久久久99| 国产东北女人在线视频| 国产精品嫩草影院午夜两性 | 桃色六月天| 伊人天堂在线| 91欧美偷拍| 亚洲熟女国产综合另类| 久久熟女人| 天堂九九九九九九九九九| 九九人人操| 免费AV播放| 欧美很很操视频| 成人性爱电影一区二区| 亚洲人妻av| 97人人草| 高潮内射在线| 伊人一区二区三区| 亚洲高清少妇| 欧美色交| 精品黄色电影| 色欲Av人妻精品一区二| 国产精品成人久久一区二区三区| 国产高清无码一区三区二区| 激情综合二| 亚洲日韩成人性爱视频| 六月丁香啪啪| 欧美一区二区三区大综合| 天天天乱色综合全| 九九热在线精品视频| 懂色av中文字幕一区二区三区天美| 国产情色第一第二页在线观看| 欧美综合777| 91天堂丝袜美腿| 青草精品视频日本久久久久网站在线| 999精品国产高清一区二区| 91人妻精华帖| www.色五月| 精品久久久久黄少妇| 日韩精品人妻中文字有码在线 | 囯产乱伦一区二区三女| 天天影视综合网欧美精品| 欧美亚综合色图| 韩日巨乳美女免费视频在线观看| 青青草一本道福利视频| 亚洲欧美另类激情小说 | 九九九九免费高| 亚洲欧美校园| 无码高清操逼网址| 女人爽到高潮潮喷18禁网站| 久久久久精| 亚洲综合九| 久久婷婷成人综合色怡春院| 国产第12页| 国产日比| 69久久久久久久久久久久久| 91福利网在线观看| 国产高清成人传媒影视| 欧美少妇一区二区三区| 久热这里| 天天色天天干天天射| 激情五月天综合网| 久久久男人的天堂| 免费精品国偷自产在线在线| 久色网| 农村妇女精品一区二区| 欧美一级在线观看成人| av国产无码| 久久精品老司| 视频不卡中文字幕| 超碰碰碰碰| 欧美在线 亚洲| 91人妻人人澡人人爽人人精品| AV无码久久久精品| 60秒免费视频| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 97在线青| 尤物黄色在线观看网站| 夜夜高潮夜夜爽高清视频一| rion磁力链接| 亚洲av无码成人精品国产| 天天操人人操骚逼网站| 亚洲日韩视频二区| 久久久99久9| 亚洲天天综合| 超碰97起碰| 98久久超碰| 精品-91人妻子系列| 97bbn| 一区二区三区高清天码| 东北老女人的激情视频| AA级电影三区| 亚洲精品天天影视综合网| 久久精品一区二区一8| 久久久久久久一级黄色打同平台| 9久久久久久| 人妻99p| 日韩日韩日韩-国产乱码精品一区二区| 亚洲国产一区二区入口| 夜夜操一区二区| 丁香九月 婷婷| 久久久性爱视频| 人妻无一区二区三区| 欧美狠狠弄| 国产亚洲福利第一页丝袜| 性色高清在线| 亚洲人妻中文高清| 少妇人妻在线| 日本福利社| 婷婷五月天激情四射| 十八禁网站在线| 小说区 图片区色 综合区| 99re这里只有精品3| 狠狠婷婷亚洲中文综合久久| 中出789在线视频| 国产av强奸美女| 美女让帅哥通她小鸡鸡| 久久99久久99精品免视看婷婷| 色综九九九一区| 激情五月婷| 亚洲 暴爽 AV人人爽日日碰| 色老汉色| 亚洲欧美日韩精品久久久一区二区| 亚洲青青草| 综合婷婷| 粉嫩av久久一区二区三区| 天天操天天日天天干| 久久精品99| 国产精品女aA片爽爽视频| 2019天天操天天爽天天拍| 欧美老妇曰批的视频| 91久热| 啊好爽受不了无码| 日韩欧美午夜视频在线| 啊啊啊啊网站| 在线色资源| 亚州宗合另类| 抽插无码高清一区| 美女天天干| 91视频女生| 厕所偷拍在线| 中文字幕在线日亚洲9| 五月亭亭六月丁香| 好湿好紧视频| 操死我了嗯嗯嗯| 久久久网站| 久久久久久亚洲中文| 九久久精| 欧美一区二区三区成人性生活| 亚洲日韩一区电影| 亚洲av综合色区无码一| 中文字幕国产在线天堂| 国产美女91| 亚洲熟女乱综合一区二区三区| 五月综合色| 中文字幕一区电影在线观看| 人人搞人人插人人操| 亚洲人精品久久久| 色综合久久夜色精品国产天堂 | 免费精品无码一级毛片牛牛影视 | 免费操逼91| 啊啊啊轻点在线观看| 亚洲 欧美 另类 日韩 人妻一区| 9 9精品一区二区三区| 无码黑人精品一区二区三区三| 精品黄色电影| 亚洲Av诱惑| 欧美偷偷网| 蜜臀久久在线视频| 开心六月色| 91狠狠综合久久久久久| 中文字幕 码 自拍 视频 区| a在线视频免费观看| 亚洲免费在线探花| 精品日韩中文在线| 国产一区二区在线播放量| 射久久| 日日摸日日碰夜夜爽视频| 欧美日本视频一区| 天欧美在线| 狠狠躁日日躁夜夜躁A| 丝袜视频一区二区在线播放国产中文 | 秋霞一区二区三区四区五区六区七区| 九九玖玖精品| 97色欧州| 欧美精品久久96人妻无码| 日韩熟女精品无码专区一区二区| 好淫网一二三视区| 中文字幕加勒比海高清无码免费视频| 日韩人体偷拍| 男人下部插入女人下部| 青青草视频在线观看一区二区| 国内精品不卡无毒99999| 日韩中字av一区| 天天摸夜夜摸| 在线一区| 91亚洲丝袜熟女| 久久久久久十| 高清有码一区二区| www亚洲免费| 色狠狠 - 百度| 亚洲日韩精品一区视频在线| 男女啪啪网站免费视频| 国精综合一二三区影视| 亚洲综合影片| 红杏大香蕉| 超碰久久中文| 欧美日韩少妇色情| 97AV在线免费观看| 久久久精品久久| 男人把坤坤插入女人的下体| 亚洲精品 欧美精品| 精品久久九| 久久高清无码夜夜操| 日本三级韩国三级美三级91| 九九九国产精品| 女生看匆91网站| 日本久久超碰| 99久久亚洲精品无码毛片潘甜甜| 99久久久久久亚洲精品不卡| 日韩性爱人人爱人人操| 天天精品| 天天色悠悠激情| 美女裸体麻豆天美蜜桃91| 亚洲91网站| 人妻 欧美亚洲| 天天看片青娱乐| 五月天婷婷在线看| 91小视频| 麻豆精品久久久久久久| 99re只有精品| 骚日日av| 久久综合九色综合欧洲98| 久久久久免费看少妇A片特黄| 十八禁成人网站在线观看| 婷婷色综合| 伊人丝袜美腿高跟在线观看高清| 97chaopenrihan| 99热在线观看| 日美免费黄片| 色好看av| 眼镜人妻101.com| 国产www色在线观看| 无码又爽又硬又激情免费视频 | 国产免费一区2区3区| 精品国产91内射久久| 婷婷伊人网| 97超级欧美| 97国产精品一区二区传媒公司| 亚洲精品一二牛牛| 亚洲综合在线视频| 五月开心久久AV官网| 色欲久久99国产精品久久久久久| av天堂精品久久| 精品国产乱码久久久久久影片| 日韩ab网| 日本人妻丰满熟妇久久久久久| 亚洲天堂久久| 色777999综合| 国产三级多多影院2022国产AA一级毛片无码 | 激情五月综合网| 96精品一区| 欧美综合娱乐久久| 精品小视频在线| 国产偷拍网站| 1024亚洲中文字幕久在线看片你懂的 | 丁香婷婷激情五月天无毒不卡| 久久97超碰| 大香交伊人网| juliaann欧美丝袜办公室| 抽插无码高清一区| 乱操9999| 三级片网站在线播放| AV男人天堂网| 日韩三级天堂在线观看| 长久操视频| 人妻中文字幕日韩电影| 97免费视频在线观看视频| 99re国产精品视频| 日韩不卡一二三四| 亚洲操逼无码| 久久久免费高清中文视频| 色综合网1| 久久久涩| 殴美,日韩国产伦精品| 黄骗免费网站| 蜜臀人妻少妇久久在线观看| 九九精品无码专区免费| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 啊啊啊啊啊啊啊国| 手机午夜电影神马久久| 91网站视频在线观看| 久久av一级av少妇av高潮| ai欧美亚洲小说| 久久一级无码精品毛片6| 亚洲怡春院| 欧美日韩成人在线| 国产毛片毛片4p懂色| 佐山爱中文字幕| 亚洲精品天堂久久A∨51成人漫| 国产91av在线播放| 极品后入免费视频| 操逼操操操91| 色欲天天综合久久久无码网中文| 你草精品在线视频| 99热在线观看| 97超碰色色| 97碰碰日本乱偷人妻中文的| 天天色综亚洲91污| 亚洲在线欧美| 色拍偷亚洲| 色色激情五月天| 日韩欧美午夜一区二区| 国产精品国产| 91在线欧色| 口爆吞精在线观看| 蜜臀久久久99久久久久 | 成人网欧美风情| 欧美亚洲日本激情在线| 天久久久噜噜噜久久国产精品爽爽| 亚洲色欲一区二区三区| 日韩精品黄片免费观看| 亚洲男人天堂av| 欧美性天天影院| 日韩性色b| 另类一区| AV一区观看| 亚洲中文字幕熟女少妇一区二区| 久久111| 伊人久久婷婷| 亚洲一级特黄大片在线播放91| 老女人综合| 国外91| 乱理日韩中文| 中文字幕五区| 黄色小视频日本txt| 亚洲高清视频在线免费观看| 久久精品国产97欧美精品亚洲 | 日韩精品资源专区二区| 超碰吊日色| 天天综合网~91综合网| 中文字日本乱码| 久久久久久亚洲精品不卡人乳| 欧美亚洲尤物久久| 欧美呦呦性爱| 97综合久久| 熟女少妇一区二区三区| 2017人人操,人人摸| 人人操人人摸超碰| 丝袜美腿丝袜| 欧美九一精品久久久熟妇| 国产精品视频播放| 少妇毛片久久| 激情综合97| 九九激情网| 日韩性爱播放| 黄色av一区二区在线| 色综合av男人天堂| 白天啪啪晚上啪啪视频| 中文字幕,人妻,日韩| 黄色AV免费| 人人弄人人摸| a亚洲欧美色欲| 9色国产精品一区粉嫩| 丰满人妻一区二区三区四区| 日本道人妻久久久在线不卡色视频| 国产精品在线一区二区| 色香伊人| 国产精品电| 九热超碰| 久久成人东京热人妻| 超碰在线成人电影| 91痴汉| 综合色欧美| 中文字幕在线免费观看 | 热热色色综合| 亚洲激情深爱文学小说网站| 欧美小说区视频区| 欧美性爱超碰97| 99999国产| 777超碰| 老司机福利青青草| 岛国黄片网站| 上海一级黄片| 亚洲国产成人高清在线| 国产丝袜视频| 9热9热综合网| 加勒比人妻综合| 欧美,日韩,中文,另类| 黄色工厂这里只有精品| 91亚洲在线| 熟妇xxxxx性春色| 操逼视频亚洲| 九九热精品视频在线观看| 亚 欧 美 综合| 91色图片| 欧美爱国产综合、| 蜜臀av在线播放一区二区三区| 亚洲高潮少妇| 国产青视频| 黄页网站成人免费| 极品销魂美女一区二区| 国产欧美日韩一区二区三区| www.av在线观看| www四虎| 国产99999久久精品| 精品欧美乱码久| 岛国黄片网站| 日本网色| 91久久伊人婷婷青青草| 欧美色交| 欧美日韩另类在线| 婷婷大香蕉| 天天色怡春院| 久久免费少妇| 国产精品久久久久久 百度| 青青操青娱乐| 最新9久久久9免费视频| 久久国产成人精品国产成人亚洲| 中文字幕交换人妻| 小草精彩毛片| 欧美淫乱视频| 情趣丝袜无码操逼视频| 五月天激情视频| 97er欧美性| 91内射| 五月婷婷基地| 91精品免费| 成年人网站在线免费观看| 日本人妻A片成人免费看片| 亚洲国成人情色好看电影| 97ai亚洲| 啪一啪免费视频| 亚洲美女30b| 久久大黄片| 久热婷婷| 亚洲第一页综合在线| 中国一级特黄大片护士| 97精彩视频网站| 国产激情在线| 亚洲黄网在哪免费看| 人妻 制服 日韩 中文 在线| 国产精品com| 五月天啪啪| 99久久免费看精品国产一区| 中国国产精品一区视频| 日本女厕偷拍| 婷婷丁香激情| 夜夜操天| 国产一区在线播放| 日韩啪啪啪啪啪| 天天操妹子| 丁香九月激情啪| 麻豆天美AV传媒第一页| 中文字幕精品一区二区精| 亚州人妻| 午夜激情成人在线观看| 爽爽爽免费视频| 天天插天天舔舔天天干| 久久αⅴ| 蜜臀久久99精品久久久老,,| 最新AV在线| 久操大香蕉手机视频在线看 | 日韩精品一区二区三区色欲| 99久在线精品99re8热视频在线| 日本狂喷奶水在线播放212| 久久伊人网视频一区二区三区| 激情五月天中文字幕色| 国产怡红院| 国产一区二区三区高清视频| 亚洲色图20p| 一本色道久久天天射天天干| 97免费免费视频网| 亚洲一区二区三区播放在线| 久久久久密臀视频| 最近2019中文字幕国语免费版| 91视频综合在线| 无遮挡h肉动漫在线观看| 大香蕉日韩欧美| 色色婷婷五月| 天天澡天天狠天天天做| sss视频华人在线| 成人性爱AV在线免费观看| 97在线观看免费视频l| 免费簧片在线观看| 日日骚一区二区三区| 五月天色图影视| 丁香婷婷五月| 日本高清熟女久久一区| 亚欧国产无码精品在线| 日逼97| 九一综合精品视品av| 一级特黄aaa大片在线观看成人一级片在线观看| 日韩 成人 有码| 岛园激情| 精品九九九| 一区二区国产视频在线观看| 日本亚洲熟女视频| 啊啊啊在线观看| 欧亚成人在线视频| A久久| 欧美日韩黄片精品在线| 天天性射网| 欧美日韩夜夜| 岛国黄色短视频| 欧洲人妻视频| 色 亚洲 91| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 美女91av| 人人爽天天爽| 国产精品蜜乳AV| 91色图| 日韩av电影网站| 九九九九九九亚洲| 国产精品久久伊人| 成人午夜高潮av猛片| 97视频免费在线| 人妻一区久久二区三区色播| 美女自卫慰黄网站免费| 欧美大香蕉卡久久| 人人操人人大香蕉| 久久亚洲国产成人| 密臀在线视频| 国产精品久久久九九九| 成人综合色网| 人人考人人摸人人干| 日韩熟女操逼| 久草资源在线| 无码精品啪啪啪一区二区三区三州| 男人的天堂.com| 天天干天天插| 另类一区| 国产一级不卡在线观看| 久久国产成人精品国产成人亚洲| 热热色AV| 欧美影音在线| 60秒试看最爽10分钟网站| 天天干天天拍| 91干熟女| 国产精品婬乱一级毛片彝族| 国产真乱mangent| 久久男人的天堂| 丝袜美腿丝袜| 91青青在线视频| 91五月天| 手机久操欧美综合色码| 97精彩视频网站| 人人操AV| 99色视频| 成人情色一区二区| 国产67194| 麻豆这里只有精品| 天天干天天狼在线视频| 成人亚欧免费视频| 日韩性爱1级片视频| www.亚洲成人一区| 日韩三级在线观看网站| 国产精品久久久啊| 国产一级内射高清视频| 69精品| 欧美综合另类| 91综合网站| 啊啊啊啊好多水| 日本大香蕉综合网红本杳社区| 国产91丝袜 在线播放| 性高潮久久久| 蜜臀久久99精品久久久久电影| 9久9久9久9久视频网站| 深爱伊人影院| 亚洲欧美97| 天天噜| 综合网亚洲| 午夜国产综合视频在线观看| 欧美性爱日韩高清| 国模无码人体一区二区三| 国产在线能看的你懂的| 情趣丝袜无码操逼视频| 五十路六十路七十路熟婆| 超碰色男人操熟女| 乱伦图一区| 亚欧性爱ab| 色噜噜综合网| 亚码激情| 黄网站黄视频网站进入口| 在线观看A啊啊啊| 大香蕉色欲AV| 欧美日韩亚洲少妇寂寞影院正在播放 | 91色伦| 亚洲人妻精品一区二区| 最新亚洲黄色免费电影 | 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 性做久久久久久免费观看软件| 1769一区二区| 偷拍 精品另类 凸凹了四区| 国产一区二区三区不卡手机在线| 麻豆一区在线| 超碰4A| 在线毛片片免费观看| 一区二区影院| 国产成人亚洲精品自产在线| 91在线限制级| 日本天堂在线播放| 高清孕妇孕交| av在线免费一区二区| 九九色热| 1区2区3区中文字幕日韩| 欧美亚洲韩国视频十五区 | 亚州精人品大香蕉| 亚洲诱惑| 国产成人五月天丁香花| 成人a v在线播放免费| 日本视频在线观看污污污| 婷婷五月天综合网| www.高清无码诱惑一区.com | 99精品网| 小骚逼被操的爽不爽| 巨乳特殊服务按摩| 曰韩操B| 美女尤物福利视频| 啊啊啊啊啊好舒服视频| 极品白嫩美少妇在地板上位骑射淫水泛滥| 在线色导航| 95精品在线| 9.1小视频| 97人人夜夜精品视频| 国产 码在线成人网站| 一区| 国产精品96| 欧美日韩国产色图在线| 99精品热| 欧美日韩在线小说| 国产福利影视| 亚洲自拍一区夜夜操| 九九九网站| 婷婷亚洲五月***久久| 五十路熟女工口 | 精品人妻一区二区视频| 丝袜AV一二三区| 91热色| 一级@啪啪视频| 91国产精品熟女| 中文字幕福利视频一区二区三区在线观看| 欧美亚洲素人制服精品| 96久久科窝| 国产熟女无套内射| 亚洲色欲天天人妻无码系列专区| 超碰夫妻97| 操逼逼一区视频| 一个人在线看的黄色电影网站| 99热销国产这里有精品| 国产乱伦性爱AV| 国产欧洲精品亚洲午夜拍精品| 欧美性爱免费短视频| 午夜天堂精品久久| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 丰满岳乱妇一区二区三区| 超碰午夜在线| 91av熟女人妻| 欧美熟妇乱码在线一区| 97在线免费观看| 天综合网| 九九九精品| 国产免费大片| 日本伦乱九九九综合| 亚洲精品蜜桃久久久一区二区三区| 超碰久超碰久| 人人人人人人少妇| 国产精品天堂| 欧美精品成人亚洲| 呦呦一区| 中文久久一区| 69精品人人人人| 国产成久久综合片| 妇女视频网站| 日本丝袜人妻内射| 九九人妻| 综合网色| 91w欧美| 久久亚洲不卡一区二区三区| 久操操AV电影| 欧美论理片| 日本午夜久久电影| 蜜臀久久99精品久久久久久婷婷| 天美传媒一二三区永久网站| 男人天堂电影院| 色五月第四色| 久久久国产亚洲精品系列| 少妇精品久久久八区九区| 欧美日韩性爱视屏免费看了| 国产精品久久泡妞网站| 久久啊哟| 福利社区午夜一区二区| 四虎精品一区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 伊人一级免费黄片| 成人十八禁日韩欧美一二三| 国产成人www免费人成看片| 96一区二区三区| 色性荡荡荡荡视频| 天天摸夜夜添无码小视频| 天天综合网亚洲综合网| 少妇超碰在线| 黑人精品一区二区在线播放| 天天超级碰碰碰| 国产亚洲一黄| 69少妇一区二区| 新怡红院| 亚洲图片欧美制度| 欧美亚洲日本激情在线| 亚州综合色| 国产欧美成人精品| 人人天天欧洲| 思思热在线cao| 97爱爱爱| 少妇特黄一区二区三区| 97中文超碰| 91强热人妻| 女沟厕偷窥piss小便| 人人摸人人舔一区二区| 精品夜夜澡人妻无码| 操逼视频亚洲| 肏逼视频日本| 青青久草| 亚洲黄a三级三级三级看三级| 啊啊啊啊一区| 青青操狠狠撩| 亚洲啪AⅤ永久无码| 男人的天堂免费| 久久九操在线观看| 天天肏美女| 久久xxxx| 手机在线人成免费视频| 成人毛片免费| 亚州欧美在线| 九九综合网| 综合网亚| 国产超碰国产97| 岛国成人av在线播放网址| 国产精品日韩在线一区| 欧美97色| 国产精品一区二区麻豆| 婷婷15月天青娱乐| 91 国产丝袜在线放观看| 99自拍视频在线| 亚洲国产精品无码AV在线| 伦伦成年午夜免费视频| 无码一区免费在线不卡| 天天性射网| 久久爱超碰网| 最新亚洲风情电影| 天天影视网综合少妇| www色婷婷| 色噜噜精品一区二区三| 69少妇一区二区| 影音先锋每日最新资源在线观看| 黄色工厂这里只有精品| 亚洲色综网| 精品久久9| 亚洲资源网| 99精品伊人| 91久久久视| 夜夜久久| 91在线丝袜视频| 99re在线观看| 97天天做| 亚洲一二三四区机械| 久久久久久久久久久久久久9999| 日韩精品99999| 99精品在线观看| 夂久色| 东京日日夜夜| 日韩天美| 久久久久久亚洲精品中文字幕人妻| 亚洲熟妇自偷自拍另欧美| 久久久久免费少妇| 一区二区三区四区色图| 亚洲宅男天堂| 亚洲,欧美,春色,另类| 懂色AV一区二区三区| 天天影视网综合少妇| 999日韩中文精品观看视频。| 久久精精区一区二区一蜜桃一区二区| 骚逼高潮久久精品| 97视频网站在线观看| 国产视频一区二区三区久久亚洲天堂| 欧美少妇大量自拍视频在线观看| 无码欧美有限公司| 精品人妻一区二区免费蜜桃| 久久欧洲| 东北女人操比视频| 四季av一区二区凹凸精品小说|