'Recursively loop through child objects, finding the values.'

def parse_children(self, json, devices, path, names):

    result = devices.copy()
    if json[OHM_CHILDREN]:
        for child_index in range(0, len(json[OHM_CHILDREN])):
            child_path = path.copy()
            child_path.append(child_index)
            child_names = names.copy()
            if path:
                child_names.append(json[OHM_NAME])
            obj = json[OHM_CHILDREN][child_index]
            added_devices = self.parse_children(obj, devices, child_path, child_names)
            result = (result + added_devices)
        return result
    if (json[OHM_VALUE].find('    ') == (-1)):
        return result
    unit_of_measurement = json[OHM_VALUE].split('    ')[1]
    child_names = names.copy()
    child_names.append(json[OHM_NAME])
    fullname = '    '.join(child_names)
    dev = OpenHardwareMonitorDevice(self, fullname, path, unit_of_measurement)
    result.append(dev)
    return result
