У меня проблемы с сериализацией _wmi_objects
. Я попытался просто с json.dumps()
и JsonPickle
библиотекой, но безуспешно получая Not JSON serializable
ошибки или с JsonPickle
некоторыми ненужными полями, которые не могут быть удалены, и нулевыми значениями для каждой сущности. после этого json.dumps()
и выводит только первый результат. Также попытался превратить объект в dict
, который имел следующий результат.
Это то, что я имею до сих пор:
import wmi, json
def to_dict(obj):
output ={}
for key, item in obj.__dict__.items():
if isinstance(item, list):
l = []
for item in item:
d = to_dict(item)
l.append(d)
output[key] = l
else:
output[key] = item
return output
c = wmi.WMI(
computer="host",
user="user",
password="password"
)
for product in c.Win32_Product():
with open('products.json','w') as fp:
fp.write(json.dumps(to_dict(product)))
С кодом выше я получаю TypeError: Object of type CDispatch is not JSON serializable
Это данные, которые я получаю, когда я print(product)
:
instance of Win32_Product
{
AssignmentType = 1;
Caption = "Microsoft Visual C++ 2019 X64 Additional Runtime - 14.22.27821";
Description = "Microsoft Visual C++ 2019 X64 Additional Runtime - 14.22.27821";
};