C'est la structure du tableau post JSON, j'ai essayé de nombreuses solutions mais personne n'a aidé. Merci d'avance.

{[['itemId'=>1,'quantity'=>3],['itemId'=>4,'quantity'=>1]]}

Structure de l'API Postman entrez la description de l'image ici

0
kashifahmad 13 avril 2020 à 12:02

2 réponses

Meilleure réponse

Vous pouvez créer un objet qui a une liste d'objets comme ceci:

public class MyAwesomeObject {
    public ArrayList<MyObject> awesomeName;
}

class MyObject {
    public String itemId;
    public int quantity;
    public ArrayList<String> someMoreFields;
}

Vous pouvez donc inclure cet objet dans votre appel POST Retrofit:

@POST("awesomeServiceURL")
Single<AnswerDto> myCall(@Body MyAwesomeObject myAwesomeObject);
2
Orestis Gartaganis 13 avril 2020 à 09:34

Ce que j'ai fait pour la structure ci-dessus:

@FormUrlEncoded
@POST("order")
Call<YourResponse> postMethod(@Field("shippingAddress") String shippingAddress,
                              @Field("items[0][id]") List<String> itemList,
                              @Field("items[0][quantity]") List<String> quantityList);

Et dans votre activité ou fragment:

List<String> itemList = new ArrayList<>();
List<String> quantityList = new ArrayList<>();
itemList.add("1","2");
quantityList.add("10","20");

Et appel de mise à niveau:

  Call<YourResponse> checkOut = BaseNetworking.apiServices(AppRepository.mAPIToken(getActivity()))
            .checkOut("this is some address", itemList, quantityList);
    checkOut.enqueue(new Callback<YourResponse>() {
        @Override
        public void onResponse(Call<YourResponse> call, Response<YourResponse> response) {
            if (response.body().getCode() == 200) {
                Toast.makeText(getActivity(), response.body().getMessage(), Toast.LENGTH_SHORT).show();
            } else {
                try {
                    JSONObject jsonObject = new JSONObject(response.errorBody().string());
                    Toast.makeText(getActivity(), jsonObject.getString("message"), Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

        @Override
        public void onFailure(Call<YourResponse> call, Throwable t) {

        }
    });
0
Kashif Ahmad 15 avril 2020 à 07:36