org. json .JSONObject проблема с Enums в супер-jar - PullRequest
1 голос
/ 25 апреля 2020

У меня есть фрагмент кода, который выглядит следующим образом: "

public enum MyEnum {
    EXAMPLE("example1", false, -1L);
    private final String name;
    private final boolean deprecated;
    private final long id;
...
}
...
MyEnum myenum = MyEnum.EXAMPLE;
try {
    params.put("myenum", myenum);
    JSONArray paramArray = new JSONArray();
    paramArray.put(0, params);
    JSONObject request = new JSONObject();
    request.put("params", paramArray);
    log.info(request.toString());

} catch (JSONException e) {
    e.printStackTrace();
}

Если я запускаю этот код напрямую с java -cp Bla Main.Class, я получаю ожидаемый результат:

{"params":[{"myenum":"example1"}]}

Однако, когда я встраиваю это в супер-флягу с Gradle, я получаю:

{"params":[{"myenum":"EXAMPLE"}]}

Так что, кажется, происходит некоторое колдовство с classpath и конкурирующими версиями org. json В первом случае toString перечисления применяется правильно, во втором случае перечисление использует метод toString по умолчанию.

Кто-нибудь знает, как это отладить?

...