Генерировать строковые ключи JSONObject - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть код, который использует итератор org.json.JSONObject

JSONObject obj = new JSONObject();
obj.put("key1", "value1");
obj.put("key2", "value2");
Iterator keys = obj.keys();
...

С предупреждением компиляции

Iterator is a raw type. References to generic type Iterator<E> should be parameterized

Я могу обновить до универсальной версии:

Iterator<?> keys = obj.keys();

Но разве нет способа "обобщить" JSONObject с помощью String ключей?

Я нахожу этот ответ , но его предложение не даетскомпилировано

JSONObject<String,Object> obj=new JSONObject<String,Object>();

РЕДАКТИРОВАТЬ

Использование Iterator<String> keys = obj.keys(); Я получаю предупреждение безопасности типа:

Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator<String>

Кроме того, использование обобщений Eclipse Infer не приводит к изменениям кода

1 Ответ

0 голосов
/ 23 декабря 2018

Ответ, на который вы указали ссылку, использует класс, отличный от того, который вы используете.Если вы посмотрите на источник для org.json.JSONObject, то обнаружите следующее:

public Iterator<String> keys() {
    return this.keySet().iterator();
}

Это означает, что вы можете написать следующий код:

    JSONObject obj = new JSONObject();
    obj.put("key1", "value1");
    obj.put("key2", "value2");
    Iterator<String> keys = obj.keys();

    while(keys.hasNext()){
        System.out.println(keys.next());
    }

и он сгенерирует следующий вывод:

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