Я хочу изучить JSON-хранилище данных на Java, используя Eclipse, поэтому я много искал.
Я нашел JSON.simple и GSON. Это хороший выбор?
Я перешел в Properties >> Java Build Path >> Add External JARs
. Я добавил json-simple-1.1.1.jar и google-gson-2.2.4-release.zip. Это правильно? Где находится JavaDoc?
Основная проблема касается примера, приведенного здесь: пример JSON.simple - чтение и запись JSON, в котором рассказывается о JSON.simple. Я написал следующий код:
JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.add("Joiner");
array.add("System");
object.put("nicknames", array);
object.put("from", "Italy");
object.put("age", 15);
try {
String path = "";
FileWriter file = new FileWriter(path);
String json = object.toJSONString();
file.write(json);
file.close();
} catch (IOException io) {
// Fail
}
Но я получаю следующие предупреждения. Что это значит?
Тип безопасности: метод add (Object) относится к необработанному типу ArrayList. Ссылки на общий тип ArrayList следует параметризовать в 'JSONArray.add'
Тип безопасности: метод put (Object, Object) относится к необработанному типу HashMap. Ссылки на общий тип HashMap следует параметризовать в 'JSONObject.put'
На стороне примечания, как я могу прикрыть мой JSON?
Я нашел JSON.simple и GSON. Это хороший выбор?
На данный момент мне очень нравится первое, но последнее имеет больше возможностей, более широко используется и всегда актуально.
Где находится JavaDoc?
Для JSON.simple см. Этот ответ на сайте. Для GSON следуйте по этой ссылке.
Я получаю некоторые предупреждения. Что они имеют в виду?
Эти классы объявляются без параметров типа для их суперкласса:
public class JSONObject extends HashMap {
// ...
}
public class JSONArray extends ArrayList {
// ...
}
Когда вы вызываете put()
или add()
, они определяются в суперклассе, который не параметризируется должным образом.
Что вы можете сделать, это добавить в @SuppressWarnings("unchecked")
.
Как я могу прикрыть свой JSON?
JSON.simple не может этого сделать, но GSON может:
Gson gson = new GsonBuilder().setPrettyPrinting().create();