- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我已经尝试了很多答案,例如:
Expected BEGIN_ARRAY but was BEGIN_OBJECT retrofit2
retrofit error Expected BEGIN_ARRAY but was BEGIN_OBJECT
还有更多。
另外,我明白错误是说我返回的是 json 对象而不是 json 数组。
但是,仍然没有任何效果。
我正在尝试在我的 Android 应用程序中获取 WordPress 博客文章。我正在使用 WordPress 5.2.1 和 WP REST API 插件
RetrofitArrayApi.java
public interface RetrofitArrayApi {
@GET("wp-json/wp/v2/posts?per_page=100")
Call<List<WPPost>> getPostInfo();
/// to make call to dynamic URL
// @GET
// Call<List<WPPost>> getPostInfo(@Url String url);
//
}
是的,我删除了“列表”
JsonApiDataModel.java
public class JsonApiDataModel {
@SerializedName("media_details")
MediaDetails mediaDetails;
public static String getSourceUrl(String json) {
return new Gson().fromJson(json, JsonApiDataModel.class).mediaDetails.sizes.full.sourceUrl;
}
public class MediaDetails {
@SerializedName("sizes")
Sizes sizes;
}
public class Sizes {
// you can use full, medium or thumbnail here!
@SerializedName("full")
Full full;
}
public class Full {
@SerializedName("source_url")
String sourceUrl;
}
}
模型.java
public class Model {
public static final int IMAGE_TYPE =1;
public String title, subtitle, Image, date;
public int type;
public static final int TEXT_TYPE=0;
public String data;
public Model(int mtype, String mtitle, String msubtitle, String image, String mdate ){
this.title = mtitle;
this.date = mdate;
this.subtitle = msubtitle;
this.type = mtype;
this.Image = image;
}
public Model(int mtype){
this.type = mtype;
}
}
Blog.java
public class Blog extends Fragment {
private ProgressBar progressBar;
private String TAG ="BlogFragment";
private ArrayList<Model> list;
private RecyclerViewAdapter adapter;
private RecyclerView recyclerView;
private LinearLayoutManager mLayoutManager;
private String baseURL = "https://www.myfitbytes.com/";
public static final SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
public static List<WPPost> mListPost;
private boolean loading = true;
private int pastVisiblesItems, visibleItemCount, totalItemCount, PageCount=1, PageCountLock=0;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//LayoutInflater lf = getActivity().getLayoutInflater();
View view = lf.inflate(R.layout.fragment_blog, container, false);
//set fragment title
// getActivity().setTitle("Blog");
//wordpress blog posts
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
progressBar = (ProgressBar) view.findViewById(R.id.progressBarPosts);
mLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(mLayoutManager);
list = new ArrayList<Model>();
/// call retrofill
getRetrofit();
adapter = new RecyclerViewAdapter( list, getActivity());
recyclerView.setAdapter(adapter);
return view;
}
public void getRetrofit(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseURL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitArrayApi service = retrofit.create(RetrofitArrayApi.class);
Call<List<WPPost>> call = service.getPostInfo();
Log.e("hellooo", "Service = "+ service);
Log.e("hellooo", "retrofit = "+ retrofit);
Log.e("hellooo", "call = "+ call);
// to make call to dynamic URL
// String yourURL = yourURL.replace(BaseURL,"");
// Call<List<WPPost>> call = service.getPostInfo( yourURL);
/// to get only 6 post from your blog
// http://your-blog-url/wp-json/wp/v2/posts?per_page=2
// to get any specific blog post, use id of post
// http://www.blueappsoftware.in/wp-json/wp/v2/posts/1179
// to get only title and id of specific
// http://www.blueappsoftware.in/android/wp-json/wp/v2/posts/1179?fields=id,title
call.enqueue(new Callback<List<WPPost>>() {
@Override
public void onResponse(Call<List<WPPost>> call, Response<List<WPPost>> response) {
Log.e("blog", " response "+ response.body());
mListPost = response.body();
progressBar.setVisibility(View.GONE);
for (int i=0; i<response.body().size();i++){
Log.e("main ", " title "+ response.body().get(i).getTitle().getRendered() + " "+
response.body().get(i).getId());
Log.e("main ", " HREF "+ response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref() + " "+
response.body().get(i).getId());
Log.e("main ", " Date "+ convertDateToTimeAgo(response.body().get(i).getDate()) + response.body().get(i).getDate().getClass().getSimpleName());
Log.e("Blog ","Category id or Name - " + response.body().get(i).getLink());
String tempdetails = response.body().get(i).getExcerpt().getRendered().toString();
tempdetails = tempdetails.replace("<p>","");
tempdetails = tempdetails.replace("</p>","");
tempdetails = tempdetails.replace("[…]","");
list.add( new Model( Model.IMAGE_TYPE, response.body().get(i).getTitle().getRendered(),
tempdetails,
response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref(),convertDateToTimeAgo(response.body().get(i).getDateGmt())));
}
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<WPPost>> call, Throwable t) {
Log.e("hellooo", "inside onfail t = "+ t);
}
});
}
public static List<WPPost> getList(){
return mListPost;
}
//convert date
public String convertDateToTimeAgo(String time) {
String inputPattern = "yyyy-MM-dd'T'HH:mm:ss";
String outputPattern = "yyyy-MM-dd HH:mm:ss'Z'";
SimpleDateFormat inputFormat = new SimpleDateFormat(inputPattern);
SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern);
inputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
outputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = null;
String str = null;
try {
date = inputFormat.parse(time);
str = outputFormat.format(date);
long dateInMilliSecond = System.currentTimeMillis() - date.getTime();
str = toDuration(dateInMilliSecond);
Log.e("Blog - ", "Date " + date);
Log.e("Blog - ", "Str " + str);
// Log.e("Blog - ", "dateInMilliSecond " + dateInMillinSecond);
} catch (ParseException e) {
e.printStackTrace();
}
return str;
}
public static final List<Long> times = Arrays.asList(
TimeUnit.DAYS.toMillis(365),
TimeUnit.DAYS.toMillis(30),
TimeUnit.DAYS.toMillis(1),
TimeUnit.HOURS.toMillis(1),
TimeUnit.MINUTES.toMillis(1),
TimeUnit.SECONDS.toMillis(1) );
public static final List<String> timesString = Arrays.asList("year","month","day","hour","minute","second");
public static String toDuration(long duration) {
StringBuffer res = new StringBuffer();
for(int i=0;i< times.size(); i++) {
Long current = times.get(i);
long temp = duration/current;
if(temp>0) {
res.append(temp).append(" ").append( timesString.get(i) ).append(temp != 1 ? "s" : "").append(" ago");
break;
}
}
if("".equals(res.toString()))
return "0 seconds ago";
else
return res.toString();
}
}
正如我提到的,大多数答案都建议删除“列表”,我也这样做了,但没有用。
谢谢,
最佳答案
使用this站点从 json 响应生成正确的响应类
关于java.lang.IllegalStateException : Expected BEGIN_ARRAY but was BEGIN_OBJECT Android error 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56607205/
我在改造方面遇到问题。 CryptoCompareClient.java public interface CryptoCompareClient { @GET("/data/pricemulti")
我正在尝试将 errorBody 转换为我的 RegistrationResponse 但它总是抛出一个 Expected BEGIN_ARRAY but was BEGIN_OBJECT 注册响应
我是初学者,我正在我的应用中使用 Retrofit 2。我有这个 JSON。 (我尝试了很多解决方案,但对我没有任何帮助)。感谢您的帮助 我遇到的错误:应为 BEGIN_ARRAY 但在第 1 行第
我是java初学者,我需要一些帮助,我看过很多关于的帖子,但没有解决他们的问题 我有来自 url 的 json 对象,就像这样 { 'history':[{ 'id':
我正在使用 Retrofit 2 发送 HTTP 请求,我已经定期完成了所有操作,但是,情况“不标准”。我有一个问题,响应类中要接收的对象之一曾经作为对象发送,而另一个作为列表发送。所以我不知道是在响
我从 .NET WS 获取 JSON 响应(项目列表),因此我想在 Android 应用程序中转换为列表。但是当使用 GSON 库时,出现以下异常: com.google.gson.JsonSynta
如何使用 Retrofit 解析此内容?我收到错误 BEGIN_OBJECT but was BEGIN_ARRAY Json 如下,它包含一个结果数组对象,该对象有一个为 null 的数组对象和信息
我正在努力通过改造和 RXAndroid 从 Android 与我的 REST API 进行交互,但遇到了问题。 当我向“api/users/{id}/{id}/classes”发送 GET 请求时,
我在使用 retrofit 调用进行解析时遇到问题。这不是重复的问题。我尝试了太多的谷歌搜索也尝试了很多解决方案,但它在我的情况下不起作用。所以请不要对这个问题投反对票。 错误 05-04 04:18
我今天才开始使用 Retrofit 库。我在获取一些 json 数据时遇到问题。 我尝试获取的 JSON 数据如下所示: [ {"id":"1","genre_id":"27","name":"
我正在尝试解析 the JSON response from this link我得到了这个异常(exception): Expected BEGIN_ARRAY but was BEGIN_OBJE
我正在努力学习 MVP。我在教程和 YouTube 视频的帮助下编写了代码。首先,我使用了 Json2Class 插件。之后,我创建了一个 Json-Server,只是为了从 REST API 获取一
在api响应中有时可以是数组,有时可以是字符串。 这里的细节是Array { "ts": "2015-06-16 11:28:33","success": true,"error": false,
您好,我是 Retrofit 库的新手,我在解析某些 json 时遇到问题。我已经查看了 Stackoverflow 上的其他一些解决方案,但对我的问题不太满意。我试图让一个简单的网络服务工作。任何建
这是我的 JSON 数据: [ { "page": 0, "threads": [ { "
我对 JSON 解析相当陌生,我正在使用 Square 的 Retrofit 库并遇到了这个问题。 我正在尝试解析这个 JSON 响应: [ { "id": 3,
我从服务中得到一个 json 结果,如下所示: { "result": { "totalCount": 15, "resultCount": 2,
我在 gson 反序列化方面遇到问题。传入的 json 看起来像这样 {"roles":{"name":"bla""perm": "bla"}} 或者当有更多可用角色时,它看起来像这样 {"roles
首先,我知道其他一些用户之前已经问过类似的问题,所以您可能认为这是一个重复的问题,但事实并非如此。 我想创建一个模型类来解析 GoogleMaps-Direction API 响应从 JSON 格式到
我目前正在使用 Retrofit 来调用此 URL 。我正在努力理解如何基于 JSON 映射 POJO。这是我的代码: final ApiInterface apiInterface = retr
我是一名优秀的程序员,十分优秀!