Как передать вложенные объекты JSON как POST-запрос с использованием Java - PullRequest
0 голосов
/ 22 сентября 2019

Как передать вложенный запрос JSON в качестве аргументов в JAVA?Ниже я опубликовал запрос JSON POST, а также разместил классы JSON в POJO (всего их три), затем я перечислил класс определения шага Cucumber - здесь я хочу передатьJSON Опубликовать запрос в качестве аргумента и нужна помощь.

Это мой запрос JSON POST:

{
    "sp_id": "7987",
    "npac_region": "midwest_region",
    "PortInRequest": {
        "svb_new_sp": "7987",
        "sv_old_sp": "7661",
        "svb_new_sp_due_date": "2019-09-20T00:00:00Z",
        "svb_lrn": "4782590986",
        "sv_lnp_type": "inter_provider",
        "sv_porting_to_original_switch": "false",
        "sv_new_sp_medium_timer_indicator": "false",
        "default_gtt": "true",
        "SVInfo": {
            "sv_tn": "8104000095"
        }
    }
}

Использование этого сайта - http://pojo.sodhanalibrary.com/

Я преобразовал свой JSONв POJO, преобразованный POJO имеет три класса -

Класс # 1 - MyPojo

 public class MyPojo
 {
   private String sp_id;

   private PortInRequest PortInRequest;

   private String npac_region;

   public String getSp_id ()
  {
      return sp_id;
   }

   public void setSp_id (String sp_id)
   {
       this.sp_id = sp_id;
   }

    public PortInRequest getPortInRequest ()
   {
      return PortInRequest;
      }

public void setPortInRequest (PortInRequest PortInRequest)
{
    this.PortInRequest = PortInRequest;
}

public String getNpac_region ()
{
    return npac_region;
}

public void setNpac_region (String npac_region)
{
    this.npac_region = npac_region;
}

@Override
public String toString()
{
    return "ClassPojo [sp_id = "+sp_id+", PortInRequest = "+PortInRequest+", npac_region = "+npac_region+"]";
}
}

Класс # 2 PostInRequest.JAVA

public class PortInRequest
{
    private String default_gtt;

    private SVInfo SVInfo;

    private String sv_old_sp;

    private String svb_lrn;

    private String svb_new_sp;

    private String sv_new_sp_medium_timer_indicator;

    private String sv_porting_to_original_switch;

    private String svb_new_sp_due_date;

    private String sv_lnp_type;

    public String getDefault_gtt ()
    {
        return default_gtt;
    }

    public void setDefault_gtt (String default_gtt)
    {
        this.default_gtt = default_gtt;
    }

    public SVInfo getSVInfo ()
    {
        return SVInfo;
    }

    public void setSVInfo (SVInfo SVInfo)
    {
        this.SVInfo = SVInfo;
    }
    //getters and setters
    public String getSv_old_sp ()
    {
        return sv_old_sp;//Nothing required here
    }

    public void setSv_old_sp (String sv_old_sp)
    {
        this.sv_old_sp = sv_old_sp;
    }

    public String getSvb_lrn ()
    {
        return svb_lrn;
    }

    public void setSvb_lrn (String svb_lrn)
    {
        this.svb_lrn = svb_lrn;
    }

    public String getSvb_new_sp ()
    {
        return svb_new_sp;
    }

    public void setSvb_new_sp (String svb_new_sp)
    {
        this.svb_new_sp = svb_new_sp;
    }

    public String getSv_new_sp_medium_timer_indicator ()
    {
        return sv_new_sp_medium_timer_indicator;
    }

    public void setSv_new_sp_medium_timer_indicator (String sv_new_sp_medium_timer_indicator)
    {
        this.sv_new_sp_medium_timer_indicator = sv_new_sp_medium_timer_indicator;
    }

    public String getSv_porting_to_original_switch ()
    {
        return sv_porting_to_original_switch;
    }

    public void setSv_porting_to_original_switch (String sv_porting_to_original_switch)
    {
        this.sv_porting_to_original_switch = sv_porting_to_original_switch;
    }

    public String getSvb_new_sp_due_date ()
    {
        return svb_new_sp_due_date;
    }

    public void setSvb_new_sp_due_date (String svb_new_sp_due_date)
    {
        this.svb_new_sp_due_date = svb_new_sp_due_date;
    }

    public String getSv_lnp_type ()
    {
        return sv_lnp_type;
    }

    public void setSv_lnp_type (String sv_lnp_type)
    {
        this.sv_lnp_type = sv_lnp_type;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [default_gtt = "+default_gtt+", SVInfo = "+SVInfo+", sv_old_sp = "+sv_old_sp+", svb_lrn = "+svb_lrn+", svb_new_sp = "+svb_new_sp+", sv_new_sp_medium_timer_indicator = "+sv_new_sp_medium_timer_indicator+", sv_porting_to_original_switch = "+sv_porting_to_original_switch+", svb_new_sp_due_date = "+svb_new_sp_due_date+", sv_lnp_type = "+sv_lnp_type+"]";
    }
}

Класс № 3 SVInfo.java

public class SVInfo
{
    private String sv_tn;

    public String getSv_tn ()
    {
        return sv_tn;
    }

    public void setSv_tn (String sv_tn)
    {
        this.sv_tn = sv_tn;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [sv_tn = "+sv_tn+"]";
    }
}

Это мой класс StepDefinition от Cucumber-

package com.qa.stepdefinitions;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import org.apache.http.client.methods.CloseableHttpResponse;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.qa.base.TestBase;
import com.qa.client.RestClient;
import com.qa.data.CreatePort;
import com.qa.data.PortInRequest;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class POSTCreatePort extends TestBase {

    TestBase testBase;
    String URL;
    String serviceURL;
    String uri;
    RestClient restClient;
    CloseableHttpResponse closeableHttpResponse;

    public POSTCreatePort() throws IOException {
        super();
        // TODO Auto-generated constructor stub
    }

    @Given("^the SOA app is up and running for the POST URL \"([^\"]*)\" and the serviceURL \"([^\"]*)\"$")
    public void the_SOA_app_is_up_and_running_for_the_POST_URL_and_the_serviceURL(String arg1, String arg2) throws Throwable {
        //Write code here that turns the phrase above into concrete actions
        String URL = arg1;
        String serviceURL = arg2;
        String uri = URL + serviceURL;
        System.out.println(uri);
        //Create the object reference to call the post method from the REST client class
        restClient = new RestClient();
        //Pass the Header information
        HashMap<String, String> headerMap = new HashMap<String, String>();
        headerMap.put("Content-Type", "application/json");
        headerMap.put("Authorization", "Basic aW1zY2xpZW50OlpKNHZrc1J1");
        //Jackson API- to convert JAVA class to JASON
        ObjectMapper mapper = `enter code here`new ObjectMapper();


        // In the below line i was to pass the arguments as JASON objects for the POST request above, which i am not sure how to do, can someone please help??

        CreatePort createPort =  new CreatePort("7987", "midwest_region", PortInRequest.class...??);

Как мне передать объект JASON в POST RQ в качестве аргументов здесь?

...