Can http.post be called in serializeJson?

Hello, I asked about this in arduinoJson github too but this forum might be a better platform for this.
I'm using ESP32-Wrover with Arduino IDE 1.8.19
I used to send JSON messages as shown in examples, which prepare a JSON document and print it to a string then post the string. As example (this is from an old code uses json 5, Im using json 6 now);

  http.begin(Send_Address);  
  http.addHeader("Content-Type","application/json");
  Jdoc["data"]   =Message;
  Jdoc.printTo(postMessage);
  httpCode = http.POST(postMessage);
  Response = http.getString();

Now I'm creating a very large json file which cannot be printed into a String because there is not enough RAM for it and I was thinking if I can use serializeJson function directly with http.POST something like ;

  http.begin(Send_Address);  
  http.addHeader("Content-Type","application/json");
  Jdoc["data"]   =Message;
  serializeJson(Jdoc,httpcode=http.POST(Jdoc));  // I know this is wrong, I want to get httpcode and response if possible
  Response = http.getString();

I couldn't find any example refers to this and I don't know if it is possible nor I have any idea how to do workaround this. Can anybody guide me here please?
Thanks in advance.

Thanks to Benoit's guidance, using serialization tutorial and combining a few other example codes, I managed to send very large json files directly. It cannot be done with HTTP library at the moment but can be done via WiFi library. Following function sends json objects using http post methode and reads server response then parse http code from it.

String midString(String str, String start_sig, String finish_sig){
  int locStart = str.indexOf(start_sig);
  if (locStart==-1) {return "";}
  locStart += start_sig.length();
  int locFinish = str.indexOf(finish_sig, locStart);
  if (locFinish==-1) {return "";}
  return str.substring(locStart, locFinish);
}

int postJsonData(int ret_httpcode, String ret_serverResponse, JsonObject inp_json, const char * inp_hostname, const uint16_t inp_port, String inp_endPoint, WiFiClient client)
{
  if(client.connect(inp_hostname,inp_port))
  {
    // Preparing "POST command to endpoint
    String postUrl ="POST ";
    postUrl+=inp_endPoint;
    postUrl+=" HTTP/1.1\r\n";

    // Preparing HTTP headers
    postUrl+="Host: ";
    postUrl+=inp_hostname;
    postUrl+="\r\n";
    postUrl+="Connection: close\r\n";
    postUrl+="Content-Length: ";
    postUrl+=measureJson(inp_json);
    postUrl+="\r\n";
    postUrl+="Content-Type: application/json\r\n\r\n";
    // Sending headers and post together
    client.print(postUrl);
    
    // Sending Json data
    serializeJson(inp_json,client);
    unsigned long timeout = millis();

    // Get Client Response
    while (client.available() == 0){
      if (millis() - timeout > 3000){
        //Serial.println(">>> Client Timeout !");
        client.stop();
        return -2;
      }
    }
    while(client.available()){
      ret_serverResponse+= client.readStringUntil('\r');
    }
    int ret_httpCode=midString(ret_serverResponse, " ", " ").toInt();
    client.stop();
  }
  else
  {
    //Serial.println("Cannot connect to the host");
    return -1;
  }
  return 1;
}