本文分享json与mat格式之间相互转换,使用python实现json转为mat,实现mat转为json。
思路:
代码如下:
from scipy.io import savemat
import json
import os# 定义一个函数,用于吧json文件转换为mat
def json_to_mat(json_name, mat_name):fin = open(json_name, encoding='UTF-8')s = json.load(fin)data = dict()for k,v in s.items():data[k] = vsavemat(mat_name, data)fin.close()# mat文件的路径
mat_path = r"./file_path_mat/"# json文件的路径
json_path = r"./file_path_json/"# 遍历文件夹中的json文件,把它们转换为mat文件
files = os.listdir(json_path)
for file in files:file_name = file.split(".")[0]json_name = json_path + filemat_name = mat_path + file_name + '.mat'# xxx.mat to xxx.jsonjson_to_mat(json_name, mat_name)print(mat_name)
思路:(基本和上面一致)
代码如下:
import json
from scipy.io import loadmat
import osdef dataParse2Json(data='mat_name.mat', save_path='json_name.json'):mat = loadmat(data)# marksdatas = mat['marks'].tolist()marks_list = []for i in range(len(datas)):one_data = datas[i]marks_list.append(one_data)# slotsdatas = mat['slots'].tolist()slots_list = []for i in range(len(datas)):one_data = datas[i]slots_list.append(one_data)# 生成json格式数据marks_slots = { }marks_slots["marks"] = marks_listmarks_slots["slots"] = slots_listreturn_json = json.dumps(marks_slots, ensure_ascii=False)print(return_json)# 把json数据写到对应目录文件with open(save_path, 'w') as f:f.write(return_json)# mat文件的路径
path = r"./file_path_mat/"# json文件的保存路径
save_path = r"./file_path_json/"# 遍历文件夹中的mat文件,把它们转换为json文件
files = os.listdir(path)
for file in files:file_name = file.split(".")[0]mat_name = path + filejson_name = save_path + file_name + '.json'# xxx.mat to xxx.jsondataParse2Json(mat_name, json_name)print(mat_name)
xx.mat文件如下:
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Fri Jan 13 16:48:33 2023', '__version__': '1.0', '__globals__': [],
'marks': array([[ 86.16408269, 256.16925065, 14.14529143, 281.73859156, 0. ],[ 38.53617571, 173.48191214, 13.63221104, 182.38779688, 0. ],[389.13049096, 146.36046512, 495.88547895, 97.80638321, 0. ],[340.17958656, 70.2881137 , 427.93077225, 33.45790747, 0. ],[412.28294574, 459.24935401, 430.08704283, 497.468855 , 0. ],[287.92118863, 493.64728682, 290.56718346, 498.93927649, 0. ]]),
'slots': array([[ 1, 2, 2, 80],[ 4, 3, 2, 80],[ 5, 6, 3, 99],[ 7, 5, 1, 90]]
}
转换好的json文件:
{"marks": [[86.16408268733855, 256.16925064599485, 14.145291433563306, 281.738591563921, 0.0], [38.53617571059439, 173.48191214470285, 13.632211035125453, 182.3877968759421, 0.0], [389.1304909560722, 146.36046511627916, 495.88547895419106, 97.8063832091313, 0.0], [340.17958656330745, 70.28811369509049, 427.9307722538273, 33.45790747357878, 0.0], [412.28294573643404, 459.2493540051679, 430.08704282524013, 497.4688549979153, 0.0], [287.921188630491, 493.6472868217054, 290.5671834625323, 498.939276485788, 0.0]], "slots": [[1, 2, 2, 80], [4, 3, 2, 80], [5, 6, 3, 99], [7, 5, 1, 90]]
}
本文只供大家参考学习,谢谢~