Я знаю, что это не лучший ответ, но если вы не можете получить работу с классом, это решение плана B.
В моем тестовом пути я добавил следующий интерфейс с реализацией по умолчанию для метода описанияMismatch.
package org.hamcrest;
/**
* PATCH because there's something wrong with the classpath. Hamcrest should be higher than Mockito so that the BaseMatcher
* implements the describeMismatch method, but it doesn't work for me.
*/
public interface Matcher<T> extends SelfDescribing {
boolean matches(Object item);
default void describeMismatch(Object item, Description mismatchDescription) {
mismatchDescription.appendDescriptionOf(this).appendValue(item);
}
@Deprecated
void _dont_implement_Matcher___instead_extend_BaseMatcher_();
}
Вы можете использовать функцию DictWriter для этого:
import csv
import json
data = [{'MT': '500', 'FISC_YR': '1958', 'RETRIEVAL_ID': 1,'INDICATOR': 'I', 'CHANGED_ON': '20181012', 'ZNGED_AT': '102708', 'ZGED_BY': 'PT'},
{'KT': '500', 'FISC_YEAR': '1958', 'RETRIEVAL_ID': 1,'INDICATOR': 'I', 'CHANGED_ON': '20181013', 'ZNGED_AT': '102709', 'ZGED_BY': 'PT'}]
data = json.loads((json.dumps(data).replace('KT', 'MT').replace('FISC_YR', 'FISC')))
with open('result.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['MT', 'FISC', 'RETRIEVAL_ID', 'INDICATOR', 'CHANGED_ON', 'ZNGED_AT', 'ZGED_BY'])
writer.writeheader()
writer.writerows(data)
Выходной файл:
MT,FISC,RETRIEVAL_ID,INDICATOR,CHANGED_ON,ZNGED_AT,ZGED_BY
500,1958,1,I,20181012,102708,PT
500,1958,1,I,20181013,102709,PT