2017-10-24 5 views
-1

Hallo, ich benutze Retrofit für JSON Parsing.Ich habe 200 Antwort-Code, aber ich habe keine ordnungsgemäße Antwort auf meine ArrayList erhalten. Ich bekomme nur die Antwort auf "Status" Feld. Andere Felder werden null. Bitte Hilfe me.JSON Daten gegeben sind unten Danke :)Retrofit Antwort nicht erhalten

// json Parsing-Methode

 private void load() { 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(url) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
       .addConverterFactory(GsonConverterFactory.create()).client(client) 


     Apiinterface request = retrofit.create(Apiinterface.class); 
     Call<MyPojo> call = request.newsget(new Newslist_Post("en",0)); 
     call.enqueue(new Callback<MyPojo>() { 
      @Override 
      public void onResponse(Call<MyPojo> call, Response<MyPojo> response{ 
       try { 
        if (response.code() == 200) { 
         Log.d("act", "onResponse - Status : " +response.code()); 
         Gson gson = new Gson(); 
         TypeAdapter<MyPojo>adapter=gson.getAdapter(MyPojo.class); 
         try { 
          if (response.errorBody() != null) { 
         Toast.makeText(MainActivity.this, "Request Success", Toast.LENGTH_SHORT).show(); 
          } 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 

        MyPojo news_model = response.body(); 

        // data = new ArrayList<>(Arrays.asList(news_model.getNews())); 
        status=news_model.isStatus(); 
        count=news_model.getCount(); 
        data=news_model.getNews(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      @Override 
      public void onFailure(Call<MyPojo> call, Throwable t) { 
       Toast.makeText(MainActivity.this, "Please Check your network",Toast.LENGTH_SHORT).show(); 
       //Log.d("Error",t.getMessage()); 
      } 
     });} 

ModelClass

Diese Modellklassen die JSON, in diesem Modell Klassenliste zu analysieren verwendet erhalten zweite Modellklasse Inhalt

public class MyPojo{ 
@SerializedName("status") 
private boolean status; 
@SerializedName("count") 
private int count; 
@SerializedName("news") 
private List<News>news; 
public int getCount() { 
    return count; 
} 
public List<News> getNews() { 
    return news; 
} 
public boolean isStatus() { 
    return status; 
} 

zweite ModelClass

In dieser Modellklasse befinden sich News-Daten, diese News-Daten werden in die erste Modellklassenliste aufgenommen.

public class News 

{ 

private String news_id; 

private String newss_description; 

private String newss_title; 

private String news_image; 

    private String lang; 

public String getNews_id() 
{ 
    return news_id; 
} 

public String getNewss_description() 
    { 
    return newss_description; 
    } 

public String getNewss_title() 
{ 
    return newss_title; 
} 
public String getNews_image() 
{ 
    return news_image; 
} 
public String getLang() 
{ 
    return lang; 
} 
} 



//JSON 


     { 
"status": true, 
"count": 2, 
"news": [ 
    { 
     "news_id": "2", 
     "news_image": "5fc2eaf170e6fc8ba6aa3974ce0c2e11.jpg", 
     "newss_title": "new 1", 
     "newss_description": "test news", 
     "lang": "en" 
    }, 
    { 
     "news_id": "1", 
     "news_image": "31e3650272d006d24ac6c5fd580cace0.jpg", 
     "newss_title": "cooking class with tanya in the name of healthy", 
     "newss_description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", 
     "lang": "en" 
    } 
] 
} 
+0

die Namen in der POJO @SerializedName das gleiche in Ihrem JSON-Antwort sein muss – Fakher

Antwort

0

SerializedName und Expose fehlt für Nachrichten Modell Artikel

@SerializedName("code") 
@Expose 

dies Ihr News.class wie ändern.

public class News { 
    @SerializedName("news_id") 
    @Expose 
    private String news_id; 
    @SerializedName("newss_description") 
    @Expose 
    private String newss_description; 

    @SerializedName("newss_title") 
    @Expose 
    private String newss_title; 

    @SerializedName("news_image") 
    @Expose 
    private String news_image; 

    @SerializedName("lang") 
    @Expose 
    private String lang; 

    public String getNews_id() { 
     return news_id; 
    } 

    public String getNewss_description() { 
     return newss_description; 
    } 

    public String getNewss_title() { 
     return newss_title; 
    } 

    public String getNews_image() { 
     return news_image; 
    } 

    public String getLang() { 
     return lang; 
    } 
} 
0

Ihre MyPojo und Nachrichten wie Klasse ändern unten

import java.util.List; 
 
import com.google.gson.annotations.Expose; 
 
import com.google.gson.annotations.SerializedName; 
 

 
public class Example { 
 

 
@SerializedName("status") 
 
@Expose 
 
private Boolean status; 
 
@SerializedName("count") 
 
@Expose 
 
private Integer count; 
 
@SerializedName("news") 
 
@Expose 
 
private List<News> news = null; 
 

 
public Boolean getStatus() { 
 
return status; 
 
} 
 

 
public void setStatus(Boolean status) { 
 
this.status = status; 
 
} 
 

 
public Integer getCount() { 
 
return count; 
 
} 
 

 
public void setCount(Integer count) { 
 
this.count = count; 
 
} 
 

 
public List<News> getNews() { 
 
return news; 
 
} 
 

 
public void setNews(List<News> news) { 
 
this.news = news; 
 
} 
 

 
} 
 

 
// News class 
 

 
import com.google.gson.annotations.Expose; 
 
import com.google.gson.annotations.SerializedName; 
 

 
public class News { 
 

 
@SerializedName("news_id") 
 
@Expose 
 
private String newsId; 
 
@SerializedName("news_image") 
 
@Expose 
 
private String newsImage; 
 
@SerializedName("newss_title") 
 
@Expose 
 
private String newssTitle; 
 
@SerializedName("newss_description") 
 
@Expose 
 
private String newssDescription; 
 
@SerializedName("lang") 
 
@Expose 
 
private String lang; 
 

 
public String getNewsId() { 
 
return newsId; 
 
} 
 

 
public void setNewsId(String newsId) { 
 
this.newsId = newsId; 
 
} 
 

 
public String getNewsImage() { 
 
return newsImage; 
 
} 
 

 
public void setNewsImage(String newsImage) { 
 
this.newsImage = newsImage; 
 
} 
 

 
public String getNewssTitle() { 
 
return newssTitle; 
 
} 
 

 
public void setNewssTitle(String newssTitle) { 
 
this.newssTitle = newssTitle; 
 
} 
 

 
public String getNewssDescription() { 
 
return newssDescription; 
 
} 
 

 
public void setNewssDescription(String newssDescription) { 
 
this.newssDescription = newssDescription; 
 
} 
 

 
public String getLang() { 
 
return lang; 
 
} 
 

 
public void setLang(String lang) { 
 
this.lang = lang; 
 
} 
 

 
}