【问题标题】:How to parse array inside json object in android java?如何在android java中解析json对象内的数组?
【发布时间】:2022-01-20 17:46:47
【问题描述】:

如果 json 数据如下所示,如何在 json 对象中显示数组数据。我想显示成分和步骤的数组数据。这是我要获取数据的完整 API 地址https://masak-apa-tomorisakura.vercel.app/api/recipe/resep-nasi-bakar-ayam

我尝试了几种方法,但我找不到如何正确实现它。

这是我的 json 模型。

@SerializedName("ingredient")
@Expose
Ingredient ingredient = null;


public Ingredient getIngredient() {
    return ingredient;
}

public void setIngredient(Ingredient ingredient) {
    this.ingredient = ingredient;
}

这是我用来显示数据的代码

    public void LoadData() {
    Call<ResultsResponse> call = Config.getInstance().getApi().results(kunci);
    call.enqueue(new Callback<ResultsResponse>() {
        @Override
        public void onResponse(Call<ResultsResponse> call, Response<ResultsResponse> response) {
            shimmerFrameLayout.startShimmer();
            detailJudul.setText(response.body().getResults().getTitle());
            detailWaktu.setText(response.body().getResults().getTimes());
            detailKesulitan.setText(response.body().getResults().getDificulty());
            detailPorsi.setText(response.body().getResults().getServings());
            detailDeskripsi.setText(response.body().getResults().getIngredient());
            detailAuthor.setText(response.body().getResults().getAuthor().getUser());
            Glide.with(DetailResepActivity.this)
                    .load(response.body().getResults().getThumb())
                    .apply(new RequestOptions().override(400, 400))
                    .into(detailGambar);

            //Intent Baca Resep di browser
            llVisitWeb.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String url = ("https://www.masakapahariini.com/resep/" + kunci);
                    Intent i = new Intent(Intent.ACTION_VIEW);
                    i.setData(Uri.parse(url));
                    startActivity(i);
                }
            });
            shimmerFrameLayout.setVisibility(View.GONE);
        }

        @Override
        public void onFailure(Call<ResultsResponse> call, Throwable t) {
            Log.d("Hasil", t.getMessage());
        }

    });

    //Intent kembali ke MainActivity
    RelativeLayout ivBack=findViewById(R.id.back);
    ivBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(v.getContext(), MainActivity.class);
            startActivity(i);

        }
    });
}

这是 android studio 显示的错误

谢谢,我希望有人给出一个示例项目,在 json 对象中显示数组数据,就像我上面的问题一样。

更新

感谢 Gralls,我可以通过创建一个新字符串并实现来显示数组数据

String ingredient= response.body().getResults().getIngredient().toString();
detailDeskripsi.setText(ingredient);

将其放入先前创建的字符串中。那么如何使数据成分可以是列表的形式呢?

【问题讨论】:

    标签: java android arrays json retrofit


    【解决方案1】:

    我没有示例项目,但成分是字符串数组。所以不要有

    @SerializedName("ingredient")
    @Expose
    Ingredient ingredient = null;
    

    你应该把数组解析成某种列表

    @SerializedName("ingredient")
    List<String> ingredient = null;
    

    我希望这会有所帮助:)

    【讨论】:

    • 感谢您回答我的问题。我已经解决了显示成分数据的问题,方法是创建一个新字符串并对之前创建的字符串实施 response.body().getResults().getIngredient().toString()。现在如何以列表的形式显示呢?请看我的问题,我已经编辑过了
    • 你可以试试String.join("\n",response.body().getResults().getIngredient()); 不是100%肯定,但这应该是最简单的方法。您还可以创建一些 ListView 或 RecyclerView 并将其显示为普通列表。
    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多