Сериализация _wmi_object в JSON в Python3 - PullRequest
0 голосов
/ 05 октября 2019

У меня проблемы с сериализацией _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";
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...