 <p>I figured out how to solve the issue: in the X class, add this to the to_dict() method:</p> <pre><code> ... if value is None: continue if key == 'metaData': array = list() for data in value: array.append(data.to_dict()) output[key] = array elif isinstance(value, SIMPLE_TYPES): output[key] = value ... </code></pre> <p>Though I'm not really sure how to automate this case where it's not based off key, but rather whenever it encounters a list of custom objects, it first converts each object in the list to_dict() first.</p>