Да. Использование последовательной очереди обеспечивает последовательное выполнение задач. Единственное отличие состоит в том, что dispatch_sync
возвращается только после завершения блока, тогда как dispatch_async
возвращается после его добавления в очередь и может не закончиться.
для этого кода
dispatch_async(_serialQueue, ^{ printf("1"); });
printf("2");
dispatch_async(_serialQueue, ^{ printf("3"); });
printf("4");
Он может печатать 2413
или 2143
или 1234
, но 1
всегда перед 3
для этого кода
dispatch_sync(_serialQueue, ^{ printf("1"); });
printf("2");
dispatch_sync(_serialQueue, ^{ printf("3"); });
printf("4");
он всегда печатает 1234
Примечание: для первого кода не будет печатать 1324
. Поскольку printf("3")
отправляется после выполнения printf("2")
. И задача может быть выполнена только после отправки .
Время выполнения задач ничего не меняет. Этот код всегда печатает 12
dispatch_async(_serialQueue, ^{ sleep(1000);printf("1"); });
dispatch_async(_serialQueue, ^{ printf("2"); });
Что может случиться, это
, и вы всегда видите 12
Использование org.apache.commons.io.IOUtils и com.fasterxml.jackson.databind.ObjectMapper быстро решит вашу проблему.
Используйте ниже:
class MegaSinList{
private List<MegaSin> megasinList;
}
class MegaSin{
private String codePostale;
private String createur;
private String creationDate;
private String creationShop;
private String description;
private int identifiant;
private String modification;
private String nom;
private int nombreEmploye;
private String rue;
private String statutLegal;
private long turnOverRange1;
private long turnOverRange2;
private String type;
private String ville;
}
и поиск извлечения ..
byte[] jsonData = IOUtils.toByteArray("/...filepath../file.json").getInputStream());
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
MegaSinList magasinListObj = objectMapper.readValue(jsonData, MegaSinList.class);
return magasinListObj;
Помните, что в зависимости от структуры json ObjectMapper может возвращать список LinkedHashMap, содержащий пары ключ-значение. Таким образом, вы можете в конечном итоге получить с помощью map.get («ключ») из этого списка и поместить в нужный объект