2

I have data which is Array of Json Objects, I need to pass this as MultiPart Form Data. The data which i need to post is below :

{
    "name": "KIMS EKM",
    "latitude": "8.5605418",
    "longitude": "76.8810471",
    "state": "Kerala",
    "district": "Thiruvananthapuram",
    "city": "Leela Infopark",
    "landmark": "Kazhakuttom",
    "phone": "7293318484",
    "email": "aswin.as@velosit.in",
    "admin_name": "Aswin",
    "admin_phone": "7293318484",
    "admin_email": "aswin.a.s@velosit.in",
    "departments": [{
        "id": 1,
        "is_sunday": 1
    }, {
        "id": 2,
        "is_sunday": 1
    }, {
        "id": 3,
        "is_sunday": 1
    }, {
        "id": 4,
        "is_sunday": 1
    }, {
        "id": 5,
        "is_sunday": 1
    }, {
        "id": 6,
        "is_sunday": 1
    }, {
        "id": 7,
        "is_sunday": 1
    }, {
        "id": 8,
        "is_sunday": 1
    }, {
        "id": 9,
        "is_sunday": 0
    }, {
        "id": 10,
        "is_sunday": 0
    }, {
        "id": 11,
        "is_sunday": 0
    }],
    "all_day_service": [3, 4, 5],
    "emergency_services": [5],
    "special_services": ["BPD", "HCDX"],
    "accreditations": [2, 3]
}

Here the exact keys are used as params for multipart form Data. There are image needed to be posted, But the real problem is described below.

I have posted MultiPart form datas, but posting array of json objects is what i find tough. How can the "departments" & "all_day_service" field can be posted ?

Aswin .A.S
  • 177
  • 1
  • 14

2 Answers2

1

You have to make models of data parts and it should look something like this:


 @Multipart
    @POST("request")
    Call<ResponseBody> upload(
        @Part("item1") RequestBody item1,
        @Part("item2") RequestBody item2,
        @Part("item3") RequestBody item3
    );

Also there is @PartMap Map<String, RequestBody> map

Antonis Radz
  • 3,036
  • 1
  • 16
  • 34
0
    -----------------------------------com.example.Department.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Department {

@SerializedName("id")
@Expose
public Integer id;
@SerializedName("is_sunday")
@Expose
public Integer isSunday;

}
-----------------------------------com.example.ResponseContracts.java-----------------------------------

package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class ResponseContracts {

@SerializedName("name")
@Expose
public String name;
@SerializedName("latitude")
@Expose
public String latitude;
@SerializedName("longitude")
@Expose
public String longitude;
@SerializedName("state")
@Expose
public String state;
@SerializedName("district")
@Expose
public String district;
@SerializedName("city")
@Expose
public String city;
@SerializedName("landmark")
@Expose
public String landmark;
@SerializedName("phone")
@Expose
public String phone;
@SerializedName("email")
@Expose
public String email;
@SerializedName("admin_name")
@Expose
public String adminName;
@SerializedName("admin_phone")
@Expose
public String adminPhone;
@SerializedName("admin_email")
@Expose
public String adminEmail;
@SerializedName("departments")
@Expose
public List<Department> departments = null;
@SerializedName("all_day_service")
@Expose
public List<Integer> allDayService = null;
@SerializedName("emergency_services")
@Expose
public List<Integer> emergencyServices = null;
@SerializedName("special_services")
@Expose
public List<String> specialServices = null;
@SerializedName("accreditations")
@Expose
public List<Integer> accreditations = null;

}

http://www.jsonschema2pojo.org/ From here, you make a model, send request by @body

@POST("/api/v1/post url here")
Call<Response> registerUser(@Body ResponseContracts body);