#java #json-simple
#java #json-простой
Вопрос:
У меня есть следующая функция, которая использует org.json.simple для создания объекта JSON.
public JSONObject createJSONRequest() {
// /* Create JSON Objects */
JSONObject jsonObject = new JSONObject();
Map<String, String> map = new HashMap<String, String>();
map.put(ACCESS_TOKEN_KEY, mAccessToken);
map.put(SESSION_ID_KEY, mSessionId);
map.put(SNAPZ_ID_KEY, mSnapzId);
map.put(EMAIL_KEY, mEmail);
map.put(EMAIL_PWD_KEY, mEmailPwd);
JSONArray list = new JSONArray();
list.add(map);
jsonObject.put("parameters", list);
jsonObject.put("function", "verifyEmail");
return jsonObject;
}
Однако я продолжаю получать это предупреждение, когда использую средство проверки ворса.
[unchecked] unchecked call to add(E) as a member of the raw type ArrayList
list.add(map);
^
where E is a type-variable: E extends Object declared in class ArrayList
warning: [unchecked] unchecked call to put(K,V) as a member of the raw type HashMap
jsonObject.put("parameters", list);
^
where K,V are type-variables:
K extends Object declared in class HashMap
V extends Object declared in class HashMap
warning: [unchecked] unchecked call to put(K,V) as a member of the raw type HashMap
jsonObject.put("function", "verifyEmail");
Я пытался использовать универсальный тип. HashMap использует общие элементы, но другие объекты JSONObject
JSONArray
этого не делают.
Большое спасибо за любые предложения,
Комментарии:
1. Откуда JSONArray, JSONObject?
2. Предположение: См. code.google.com/p/json-simple/source/browse/trunk/src/main/java /… и code.google.com/p/json-simple/issues/detail?id=84 (это означает, что вы не можете избежать этих предупреждений, за исключением их подавления …)
3. @Marco13 Спасибо. — И это было бы так легко написать
class JSONArray<E> extends ArrayList<E> {
.4. @ant2009 Если это из библиотеки json-simple (как я предполагаю), то вы могли бы рассмотреть возможность добавления
json-simple
тега (и я могу превратить комментарий в ответ …)
Ответ №1:
Вы получаете это предупреждение, потому что библиотека использует коллекции необработанных типов внутри. Чтобы скрыть это предупреждение, вы комментируете свой метод с помощью @SuppressWarnings("unchecked")
.
Если вы хотите использовать библиотеку json с поддержкой generics. Вы можете использовать Google GSOn. Я сам использовал это во многих проектах. Это просто и использует универсальные коллекции.
Комментарии:
1. итак, ответ «никогда не использовать
com.googlecode.json-simple
«, потому что кто будет комментировать все в коде?