Онлайн словарь API не работает с помощью модернизации
Я пытаюсь сделать онлайн-словарь с использованием бесплатного словаря API с использованием модернизации Я новичок в модернизации. Каждый раз, когда я запускаю приложение, приложение сбой.
Ошибка Logcat:
com.google.gson.stream.MalformedJsonException: используйте JsonReader.setLenient(true) для принятия искаженного JSON в строке 1, путь 1, столбец $ 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err: at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1567) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err:
на com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1416) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err:
в com.google.gson.stream.JsonReader.doPeek(JsonReader.java:597) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err: в com.google.gson.stream.JsonReader.peek(JsonReader.java:429) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err: в com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:74) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err:
на com.google.gson.internal.bind.CollectionTypeAdapterFactory $ Adapter.read (CollectionTypeAdapterFactory.java:61) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err:
at retrofit2.converter.gson.GsonResponseBodyConverter.convert (GsonResponseBodyConverter.java:37) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err:
at retrofit2.converter.gson.GsonResponseBodyConverter.convert (GsonResponseBodyConverter.java:25) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err:
at retrofit2.ServiceMethod.toResponse (ServiceMethod.java:116) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err: at retrofit2.OkHttpCall.parseResponse (OkHttpCall.java:2) -03 16: 17: 38,531 25440-25479 / com.mohit.dictionaryapp W / System.err: at retrofit2.OkHttpCall.execute (OkHttpCall.java:174) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err: at retrofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall.execute (ExecutorCallAdapterFactory.java:89) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err:
at com.mohit.dictionaryapp.DictionaryApi.searchMeaning (DictionaryApi.java:33) 07-03 16: 17: 38.531 25440-25479 / com.mohit.dictionaryapp W / System.err:
в com.mohit.dictionaryapp.GetMeaningTask.doInBackground(GetMeaningTask.java:27) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err:
в com.mohit.dictionaryapp.GetMeaningTask.doInBackground(GetMeaningTask.java:13) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err:
на android.os.AsyncTask$2.call(AsyncTask.java:288) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err: на java.util.concurrent.FutureTask.run(FutureTask.java:237) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 07-03 16:17:38.531 25440-25479/com.mohit.dictionaryapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 07-03 16:17:38.532 25440-25479/com.mohit.dictionaryapp W/System.err:
в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 07-03 16:17:38.532 25440-25479/com.mohit.dictionaryapp W/System.err:
на java.lang.Thread.run (Thread.java:818)
DictionaryApi.java
public class DictionaryApi {
public interface Alfa{
@GET("/word.json/{word}/definitions")
Call<ArrayList<Dictionary>> meaning(@Path("word") String word,@Query("api_key") String api_key);
}
public static ArrayList<Dictionary> searchMeaning(String word,String api_key){
Retrofit retrofit=new Retrofit.Builder().baseUrl("http://api.wordnik.com/v4/")
.addConverterFactory(GsonConverterFactory.create()).build();
Alfa alfa=retrofit.create(Alfa.class);
Call<ArrayList<Dictionary>> call = alfa.meaning(word,api_key);
try {
Response<ArrayList<Dictionary>> response=call.execute();
Log.e("Dpi", response.message().toString());
Log.e("Dpi",String.valueOf(response.code()));
return response.body();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
Dictionary.java (Pojo)
public class Dictionary {
public String word;
public String partOfSpeech;
public String sequence;
public String text;
}
URL api словаря: http://api.wordnik.com/v4/word.json/fantasy/definitions?api_key=a2a73e7b926c924fad7001ca3111acd55af2ffabf50eb4ae5
Пожалуйста, помогите мне решить это.
1 ответ
Исходя из ответа JSON, полученного из вашего API, попробуйте изменить pojo на приведенное ниже:
public class Dictionary {
private List<Object> textProns = new ArrayList<Object>();
private String sourceDictionary;
private List<Object> exampleUses = new ArrayList<Object>();
private List<Object> relatedWords = new ArrayList<Object>();
private List<Object> labels = new ArrayList<Object>();
private List<Object> citations = new ArrayList<Object>();
private String word;
private String partOfSpeech;
private String attributionText;
private String sequence;
private String text;
private Double score;
public List<Object> getTextProns() {
return textProns;
}
public void setTextProns(List<Object> textProns) {
this.textProns = textProns;
}
public String getSourceDictionary() {
return sourceDictionary;
}
public void setSourceDictionary(String sourceDictionary) {
this.sourceDictionary = sourceDictionary;
}
public List<Object> getExampleUses() {
return exampleUses;
}
public void setExampleUses(List<Object> exampleUses) {
this.exampleUses = exampleUses;
}
public List<Object> getRelatedWords() {
return relatedWords;
}
public void setRelatedWords(List<Object> relatedWords) {
this.relatedWords = relatedWords;
}
public List<Object> getLabels() {
return labels;
}
public void setLabels(List<Object> labels) {
this.labels = labels;
}
public List<Object> getCitations() {
return citations;
}
public void setCitations(List<Object> citations) {
this.citations = citations;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public String getPartOfSpeech() {
return partOfSpeech;
}
public void setPartOfSpeech(String partOfSpeech) {
this.partOfSpeech = partOfSpeech;
}
public String getAttributionText() {
return attributionText;
}
public void setAttributionText(String attributionText) {
this.attributionText = attributionText;
}
public String getSequence() {
return sequence;
}
public void setSequence(String sequence) {
this.sequence = sequence;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
}
Theres отличный сайт под названием http://www.jsonschema2pojo.org/ который может помочь вам в создании POJO.