преобразовать java объект в json, используя gson - PullRequest
1 голос
/ 20 апреля 2020

Я использую Java Reflection API для получения объектов, так как я не знаю тип объекта в явном виде и у меня нет доступа к классам.

if (object != null) {
    HashMap<String, Object> requestDetails = new HashMap<>();
    for (Field field : object.getClass().getDeclaredFields()) {
        field.setAccessible(true);
        Object value = null;
        try {
            value = field.get(object);
        } catch (IllegalAccessException e) {
            log.error("Could not found the class", e);
        }
        if (value != null) {
            requestDetails.put(field.getName(), value);
        }
    }
    return requestDetails;
}
return object;

Затем я хотел преобразовать его в JSON объект с помощью Gson.

for (Map.Entry<String, Object> authzRequestDetail : authzRequestDetails.entrySet()) {
    final Gson gson = new GsonBuilder()
            .registerTypeAdapterFactory(getStaticTypeAdapterFactory())
            .create();
    JsonElement element = gson.toJsonTree(authzRequestDetail.getValue());
    valueObject.add(authzRequestDetail.getKey(), element);
}
return valueObject;

Так как я не знаю тип класса, я получаю ошибку,

Attempted to serialize java.lang.Class: org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint. Forgot to register a type adapter?

Возможно ли преобразовать его в JSON объект, не зная класса из-за того, что у меня нет доступа к классам в Downcast и я передаю его, как (скажем, класс доступен ClassA)

JsonElement element = gson.toJsonTree((ClassA)authzRequestDetail.getValue(),ClassA.class);

обратите внимание, что эти объекты содержат несколько типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...