В вашем ParseContent
классе вы предполагаете, что JSON
полезная нагрузка - это JSONObject
, но это JSONArray
.В JSON
просмотра вы можете проверить это.JSON
выглядит следующим образом:
[{...},{...},{...},...,{...}]
Итак, вам нужен другой подход для чтения данных.Ниже приведен пример того, как этот JSON
должен быть проанализирован с использованием org.json
библиотеки:
import org.json.JSONArray;
import java.io.File;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class JsonApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
String json = Files.readAllLines(jsonFile.toPath()).stream().collect(Collectors.joining());
List<TemplateModel> infos = getInfo(json);
infos.forEach(System.out::println);
}
private static List<TemplateModel> getInfo(String response) {
JSONArray array = new JSONArray(response);
List<TemplateModel> models = new ArrayList<>(array.length());
for (Object item : array.toList()) {
Map<String, Object> map = (Map) item;
TemplateModel model = new TemplateModel();
model.setCategories(((List) map.get("categories")).get(0).toString());
model.setTitle(((Map) map.get("title")).get("rendered").toString());
model.setAuthor(map.get("author").toString());
model.setDate(map.get("date").toString());
models.add(model);
}
return models;
}
}
Над отпечатками кода:
TemplateModel{categories='365', title='Dai sofisti a Rousseau: quanto è democratico il televoto?', author='21', date='2019-02-24T12:02:22'}
TemplateModel{categories='235', title='Piedi screpolati e cattivo odore: tranquille, c’è la salvia', author='26', date='2019-02-24T11:14:49'}
TemplateModel{categories='495', title='Camarillo Brillo: 10 dischi più venduti della settimana 16-23 feb', author='27', date='2019-02-24T10:13:24'}
TemplateModel{categories='527', title='La Paranza dei Bambini, il pm: “La realtà è molto peggio”', author='1', date='2019-02-23T19:26:05'}
TemplateModel{categories='527', title='Festa: farò la rivoluzione ad Avellino. L’apertura a Petitto', author='11', date='2019-02-23T19:06:40'}
TemplateModel{categories='525', title='Cocaina Avellino, blitz nel parcheggio e in casa: in due nei guai', author='1', date='2019-02-23T17:42:03'}
TemplateModel{categories='525', title='Irpinia maltempo: vento abbatte alberi e pali|VIDEO e FOTO', author='23', date='2019-02-23T16:57:11'}
TemplateModel{categories='524', title='Valle del Sabato in rivolta contro fonderia: basta veleni!|VIDEO', author='38', date='2019-02-23T12:23:56'}
TemplateModel{categories='460', title='I segreti per scrivere un post di successo su Facebook', author='34', date='2019-02-23T12:19:52'}
TemplateModel{categories='525', title='Avellino, crolla albero a 2 passi dal teatro. Punto sul maltempo', author='23', date='2019-02-23T10:38:28'}
Ваш ParseContent.isSuccess
иParseContent.getErrorCode
методы не имеют смысла, потому что JSON
полезная нагрузка не содержит эту информацию.Если вы получили JSON
полезную нагрузку, это означает, что она уже OK
.
РЕДАКТИРОВАТЬ после комментария
Если вы не можете использовать метод toList
, попробуйте следующий подход, чтобы прочитать JSON
:
private static List<TemplateModel> getInfo(String response) {
JSONArray array = new JSONArray(response);
List<TemplateModel> models = new ArrayList<>(array.length());
for (int i = 0; i < array.length(); i++) {
JSONObject jsonObject = (JSONObject) array.get(i);
TemplateModel model = new TemplateModel();
model.setCategories(((JSONArray) jsonObject.get("categories")).get(0).toString());
model.setTitle(((JSONObject) jsonObject.get("title")).get("rendered").toString());
model.setAuthor(jsonObject.get("author").toString());
model.setDate(jsonObject.get("date").toString());
models.add(model);
}
return models;
}