0

I have tested this in my backend PHP API. The data that will be passed like this:

{
    "driver": "Dzil",
    "vehicle_number": "Jalal",
    "date_unique_number": "2019-09-09",
    "unique_number": "ABCDEF",
    "rest_product_weighing_details": [400,401]
}

As you can see, the rest_product_weighing_detail is an array.

How to make retrofit will be handle this in post ?

Any advice it so appreciated

4 Answers 4

1
  • Create a model class of your json body

Create an object an set your data.

public class BodyModel {

@SerializedName("driver")
@Expose
private String driver;
@SerializedName("vehicle_number")
@Expose
private String vehicleNumber;
@SerializedName("date_unique_number")
@Expose
private String dateUniqueNumber;
@SerializedName("unique_number")
@Expose
private String uniqueNumber;
@SerializedName("rest_product_weighing_details")
@Expose
private List<Integer> restProductWeighingDetails = null;
//...
}

Pass the object as body in your api call

@Headers({"Content-Type: application/json"})
@POST("your/api/endpoint")
Call<ResponseBody> sendDrivingData(@Body BodyModel body);
Sign up to request clarification or add additional context in comments.

Comments

1

I think just this handle it for you :

private List<Integer> rest_product_weighing_details;

and also this link may help you: Android retrofit parse nested json response in List

Comments

1

Step 1:

In your Decode class :

public class Decode {

private List<Integer> values = new ArrayList<>(); // in json it is "rest_product_weighing_details"

public List<Integer> getValues() {
    return values;
 }

public void setValues(List<Integer> values) {
    this.values = values;
 }
}

Step 2:

create following JsonDeserializer:

public class MyDeserializer implements JsonDeserializer<Decode> {

@Override
public Decode deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
    JsonObject decodeObj = arg0.getAsJsonObject();
    Gson gson = new Gson();
    Decode decode = gson.fromJson(arg0, Decode.class);
    List<Integer> values = null;
    if (decodeObj.get("rest_product_weighing_details").isJsonArray()) {
        values = gson.fromJson(decodeObj.get("rest_product_weighing_details"), new TypeToken<List<Integer>>() {
        }.getType());
    } else {
        Integer single = gson.fromJson(decodeObj.get("rest_product_weighing_details"), Integer.class);
        values = new ArrayList<Integer>();
        values.add(single);
    }
    decode.setValues(values);
    return decode;
 }

}

Comments

0

create a class and assign value to it,

public class Example {

@SerializedName("driver")
@Expose
private String driver;
@SerializedName("vehicle_number")
@Expose
private String vehicleNumber;
@SerializedName("date_unique_number")
@Expose
private String dateUniqueNumber;
@SerializedName("unique_number")
@Expose
private String uniqueNumber;
@SerializedName("rest_product_weighing_details")
@Expose
private List<Integer> restProductWeighingDetails = null;

public String getDriver() {
return driver;
}

public void setDriver(String driver) {
this.driver = driver;
}

public String getVehicleNumber() {
return vehicleNumber;
}

public void setVehicleNumber(String vehicleNumber) {
this.vehicleNumber = vehicleNumber;
}

public String getDateUniqueNumber() {
return dateUniqueNumber;
}

public void setDateUniqueNumber(String dateUniqueNumber) {
this.dateUniqueNumber = dateUniqueNumber;
}

public String getUniqueNumber() {
return uniqueNumber;
}

public void setUniqueNumber(String uniqueNumber) {
this.uniqueNumber = uniqueNumber;
}

public List<Integer> getRestProductWeighingDetails() {
return restProductWeighingDetails;
}

public void setRestProductWeighingDetails(List<Integer> restProductWeighingDetails) {
this.restProductWeighingDetails = restProductWeighingDetails;
}

}

you can generate json pojo class using http://www.jsonschema2pojo.org/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.