本文目錄一覽:
- 1、何用shell或者python腳本格式化 json後綴名文件,並保存
- 2、Linux Shell格式化Json
- 3、如何通過shell取得下面JSON里的數據
- 4、如何用shell或者python腳本格式化 json後綴名文件,並保存文件,求助
- 5、Linux Shell jq比較json是否相同
何用shell或者python腳本格式化 json後綴名文件,並保存
import json
str = “{‘price’: 542.23, ‘name’: ‘ACME’, ‘shares’: 100}”
parsed = json.loads(str.replace(‘\”, ‘”‘))
print json.dumps(parsed, indent=4, sort_keys=True)
Linux Shell格式化Json
Linux下查看格式化輸出json
使用json在線解析可以解決問題
其實Linux下有現成的工具可以很好的顯示
1.直接以文本形式展現
輸入
回車顯示結果
2.如果json保存在文件里比如
可以使用
即可格式化查看json如圖
我們平常使用curl測試返回的數據也可以這樣格式化輸出
編寫Shell腳本
保存為文件abc.sh
比較清晰了
這也算是平時積累的小技巧
如何通過shell取得下面JSON里的數據
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class DoJSON {
public static void main(String[] args) {
JSONArray employees = new JSONArray(); //JSON數組
JSONObject employee = new JSONObject(); //JSON象
employee.put(“firstName”, “Bill”); //按鍵-值形式存儲數據JSON象
employee.put(“lastName”, “Gates”);
employees.add(employee); //JSON象加入JSON數組
employee.put(“firstName”, “George”);
employee.put(“lastName”, “Bush”);
employees.add(employee);
employee.put(“firstName”, “Thomas”);
employee.put(“lastName”, “Carter”);
employees.add(employee);
System.out.println(employees.toString());
for(int i=0; iemployees.size(); i++) {
JSONObject emp = employees.getJSONObject(i);
System.out.println(emp.toString());
System.out.println(“FirstName :\t” + emp.get(“firstName”));
System.out.println(“LastName : \t” + emp.get(“lastName”));
}
}
}
K
如何用shell或者python腳本格式化 json後綴名文件,並保存文件,求助
不知道你用的哪個版的python
我使用python3可以處理有中文的json文件
讀寫json文件:
首先 import json
load() loads()
dump() dumps()
一、從文件:
json轉Python數據結構:json.load
fo = open(‘data.json’, ‘r’)
data = json.load(fo)
python數據結構轉json:json.dump
fo = open(‘data.json’, ‘r’)
json.dump(data, fo)
二、python字符串和json之間互相轉換:
json_str = json.dumps(data)
data = json.loads(json_str)
三、json格式化輸出:
1、格式化打印 pprint
2、格式化輸出
在編碼JSON的時候,還有一些選項很有用。 如果你想獲得漂亮的格式化字符串後輸出,可以使用json.dumps() 的indent參數。
它會使得輸出和pprint()函數效果類似。比如:
print(json.dumps(data, indent=4))
fo = open(‘data.json’, ‘r’)
json.dump(data, fo, indent=4)
四、帶有中文的json轉換:
jsondata= json.dumps( dics, ensure_ascii = False, indent = 4 )
在dumps方法中加入參數ensure_ascii = False,可以使dic中的中文正常轉換
2、若python的數據中既有普通字符,又有Unicode字符串,上述方法則不行,還要在後面加上encode(‘utf-8’)
手動轉換成utf-8編碼
jsondata= json.dumps( dics, ensure_ascii = False, indent = 4 ).encode(‘utf-8’)
Linux Shell jq比較json是否相同
問題:shell下使用jq比較兩個json是否相等,第一個難點是KEY需要排序,第二個難點是array需要排序
Jq 本身提供-S參數使key進行排序
不過無法處理array.
jq提供了walk功能可以對所有的key進行遍歷,同時他的example1就展示了如何對array進行排序,但apt中提供的jq不具有這個功能。
在github上找到了可以在jq1.5中使用walk的方法
最後寫成了這個樣子,
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/190994.html