本文目录一览:
- 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的方法
最后写成了这个样子,