Я использую поток / массивы для преобразования JSONArray
в String[]
. Библиотека, используемая для json, имеет вид: jsonsimple
Один из следующих элементов:
import org.json.simple.parser.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
// other stuff
try (FileReader reader = new FileReader(
"/home/hduser/eclipse-workspace/db-simulatiob/src/generator-config.json")) {
// Get config json
JSONObject obj = (JSONObject) jsonParser.parse(reader);
JSONObject aTags = (JSONObject) obj.get("assembling-tags");
String[] assemblingTags = (String[]) ((JSONArray) aTags.get("list")).stream().toArray(String[]::new); <---- one liner
Но возвращается предупреждение:
Тип безопасности: метод toArray (IntFunction) относится к необработанному типу Stream. Ссылки на тип * generic c должны быть параметризованы
Согласно этому аналогичному посту , я должен дать явный тип, ОК.
Не будучи Чтобы разобраться с одним вкладышем, я разделил один вкладыш на три и попытался скрыть предупреждение об этой новой версии. Пока у меня есть это:
JSONArray temp = (JSONArray) aTags.get("list");
Stream<JSONArray> ts = temp.stream(); <=== warning here
String[] tss = (String[]) ts.toArray(String[]::new);
Но он все еще возвращает то же предупреждение во второй строке на temp.stream();
.
Как я могу исправить код, чтобы подавить предупреждение