java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、BEGIN_OBJECT Androidエラーでした

JMASTER B:

最初に、私はすでに次のような多くの答えを試しました:

BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTレトロフィット2でした

レトロフィットエラーBEGIN_ARRAYが必要ですが、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;
}

}

Model.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("[&hellip;]","");


                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();
   }





   }

私が述べたように、ほとんどの回答は「リスト」を削除することを推奨していますが、それは機能しませんでした。

おかげで、

モハマドソンマキア:

このサイトを使用し、json応答から正しい応答クラスを生成します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、1行2列目がBEGIN_OBJECTでした

分類Dev

java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、パスでBEGIN_OBJECTでした

分類Dev

レトロフィット-java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTでした

分類Dev

java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、BEGIN_OBJECT -ANDROIDRETROFIT2でした

分類Dev

致命的な例外:java.lang.RuntimeException-java.lang.IllegalStateExceptionが原因で発生します。BEGIN_ARRAYが必要ですが、BEGIN_OBJECTでした

分類Dev

java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、行1、列2のパスでBEGIN_OBJECTでした$ -Retrofit 2 Android kotlin

分類Dev

Androidのレトロフィット:java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、行1、列2のパスでBEGIN_OBJECTでした

分類Dev

GSONを使用したJson解析:JsonSyntaxException:java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、行1、列2のパス$でBEGIN_ARRAYでした

分類Dev

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、1行目101パスでBEGIN_OBJECTでした

分類Dev

java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYKotlinでした

分類Dev

java.lang.illegalstateException:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYRetrofitでした

分類Dev

java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTRetrofitでした

分類Dev

JSONエラー「java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、1行1列1パス$でSTRINGでした」

分類Dev

Java:BEGIN_OBJECTが必要ですが、行1、列2のパス$でBEGIN_ARRAYでした

分類Dev

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:文字列が必要でしたが、BEGIN_OBJECTでした

分類Dev

Google Gson-com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:文字列が必要でしたが、BEGIN_OBJECTでした

分類Dev

Java gsonエラー:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYでした(ただし、タイプマップは正しいですか?)

分類Dev

GsonでJSON(ストリームモード)を解析するJAVAエラー:BEGIN_ARRAYが必要ですが、行1列2パス$でBEGIN_OBJECTでした

分類Dev

Map <String、String>をPOJOのリストに変換します-java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、STRINGでした

分類Dev

JSON エラー: 原因: java.lang.IllegalStateException: BEGIN_OBJECT が予期されていましたが、行 1 列 1 パス $ で STRING でした

分類Dev

Android Javaはbegin_objectを期待していましたが、begin_arrayでした

分類Dev

BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTでした

分類Dev

行1列828パス$ .data.user.agent.identity_typeでBEGIN_OBJECT期待されたがSTRING:java.lang.IllegalStateException

分類Dev

BEGIN_ARRAYが必要ですが、1行2列目がBEGIN_OBJECTでした

分類Dev

"java.lang.illegalStateExpection:文字列が必要ですが、kotlinの1行目列145パス$ .docs [0] .descriptionでBEGIN_ARRAYでした"

分類Dev

BEGIN_ARRAYが必要でしたが、gson、android、retrofitでBEGIN_OBJECTエラーが発生しました

分類Dev

Retrofit 2.0.0 beta2:begin_arrayが必要でしたが、begin_objectでした

分類Dev

改造-BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTでしたか?

分類Dev

Gradleのビルドはjava.lang.IllegalStateExceptionで失敗:期待BEGIN_ARRAYが、行1列1パス$でSTRINGました

Related 関連記事

  1. 1

    java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、1行2列目がBEGIN_OBJECTでした

  2. 2

    java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、パスでBEGIN_OBJECTでした

  3. 3

    レトロフィット-java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTでした

  4. 4

    java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、BEGIN_OBJECT -ANDROIDRETROFIT2でした

  5. 5

    致命的な例外:java.lang.RuntimeException-java.lang.IllegalStateExceptionが原因で発生します。BEGIN_ARRAYが必要ですが、BEGIN_OBJECTでした

  6. 6

    java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、行1、列2のパスでBEGIN_OBJECTでした$ -Retrofit 2 Android kotlin

  7. 7

    Androidのレトロフィット:java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、行1、列2のパスでBEGIN_OBJECTでした

  8. 8

    GSONを使用したJson解析:JsonSyntaxException:java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、行1、列2のパス$でBEGIN_ARRAYでした

  9. 9

    com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、1行目101パスでBEGIN_OBJECTでした

  10. 10

    java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYKotlinでした

  11. 11

    java.lang.illegalstateException:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYRetrofitでした

  12. 12

    java.lang.IllegalStateException:BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTRetrofitでした

  13. 13

    JSONエラー「java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、1行1列1パス$でSTRINGでした」

  14. 14

    Java:BEGIN_OBJECTが必要ですが、行1、列2のパス$でBEGIN_ARRAYでした

  15. 15

    com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:文字列が必要でしたが、BEGIN_OBJECTでした

  16. 16

    Google Gson-com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:文字列が必要でしたが、BEGIN_OBJECTでした

  17. 17

    Java gsonエラー:BEGIN_OBJECTが必要ですが、BEGIN_ARRAYでした(ただし、タイプマップは正しいですか?)

  18. 18

    GsonでJSON(ストリームモード)を解析するJAVAエラー:BEGIN_ARRAYが必要ですが、行1列2パス$でBEGIN_OBJECTでした

  19. 19

    Map <String、String>をPOJOのリストに変換します-java.lang.IllegalStateException:BEGIN_ARRAYが必要ですが、STRINGでした

  20. 20

    JSON エラー: 原因: java.lang.IllegalStateException: BEGIN_OBJECT が予期されていましたが、行 1 列 1 パス $ で STRING でした

  21. 21

    Android Javaはbegin_objectを期待していましたが、begin_arrayでした

  22. 22

    BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTでした

  23. 23

    行1列828パス$ .data.user.agent.identity_typeでBEGIN_OBJECT期待されたがSTRING:java.lang.IllegalStateException

  24. 24

    BEGIN_ARRAYが必要ですが、1行2列目がBEGIN_OBJECTでした

  25. 25

    "java.lang.illegalStateExpection:文字列が必要ですが、kotlinの1行目列145パス$ .docs [0] .descriptionでBEGIN_ARRAYでした"

  26. 26

    BEGIN_ARRAYが必要でしたが、gson、android、retrofitでBEGIN_OBJECTエラーが発生しました

  27. 27

    Retrofit 2.0.0 beta2:begin_arrayが必要でしたが、begin_objectでした

  28. 28

    改造-BEGIN_ARRAYが必要でしたが、BEGIN_OBJECTでしたか?

  29. 29

    Gradleのビルドはjava.lang.IllegalStateExceptionで失敗:期待BEGIN_ARRAYが、行1列1パス$でSTRINGました

ホットタグ

アーカイブ