Again, this really should just be a property setting and the cJsonHttpTransfer class not being able to handle this without low level custom code is a shame.

For the record my code looks like this (and is specific for this one REST interface)

  // Serializes a json object to webform format.
  // This is basically the format where parameters would be passed on the URL, including url encoding of the data, except
  // that we are required to pass it as html body. 
  Function JsonToWebForm Handle hoJson Returns UChar[]
    String  sParams
    String  sJson
    String  sName
    String  sValue
    Integer iCount
    Integer iIndex
    UChar[] ucData
    If (hoJson<>0) Begin
      //Set peWhiteSpace of hoJson to jpWhitespace_Pretty
      //Get Stringify Of hoJson To sJson
      Get MemberCount Of hoJson To iCount
      If (iCount>0) Begin
        For iIndex From 0 To (iCount-1) 
          Get MemberNameByIndex Of hoJson iIndex To sName
          If (sName<>"") Begin
              Get MemberValue of hoJson sName to sValue
              If (sValue<>"") Begin
                Get UrlEncode sName true To sName
                Get UrlEncode sValue true To sValue
                // from this specific REST publisher doc:
                // Note: As the + sign is a reserved character in forms, depending on your needs and client you 
                // must manually pass %2B instead of + in the date.
                Move (Replaces("+",sValue,"%2B")) To sValue
                If (sParams<>"") Begin
                  Move (sParams+"&") To sParams
                Move (sParams+sName+"="+sValue) to sParams
    Move (StringToUCharArray(sParams)) to ucData
    Function_Return ucData

  // Based on HttpVerbJson from cJsonHttpTransfer
  // Generic HTTP Request - it is passed the Verb. Used by all other http requests
  Function HttpVerbJsonWebForm  String sHost String sFilePath Handle  hoJsonRequest String sVerb Boolean ByRef bOk Returns Handle
      UChar[] ucJsonRequest ucJsonResponse
      Handle hoJsonResponse
      Integer eStat
      If (hoJsonRequest<>0) Begin
          //Get StringifyUTF8 of hoJsonRequest to ucJsonRequest  // Only one line changed! Comment out this one and
          Get JsonToWebForm hoJsonRequest to ucJsonRequest       // replaced with this line
      Get HttpVerbJsonUChar sHost sFilePath ucJsonRequest sVerb to ucJsonResponse
      If (SizeOfArray(ucJsonResponse)) Begin
          Get UCharDatatoJson ucJsonResponse to hoJsonResponse
          If (hoJsonResponse=0) Begin
              // this indicates that data was returned but it could not be loaded as Json
              Set peJsonTransferStatus to jtsNotJson
              // note bad data is still is ppDataReceived (might be useful for debugging)
      // return Ok status by reference
      Get peJsonTransferStatus to eStat
      Move (eStat=jtsOk) to bOk
      Function_Return hoJsonResponse
  // based on HttpPostJson from cJsonHttpTransfer
  Function HttpPostJsonWebForm String sHost String sFilePath Handle hoJsonRequest Boolean ByRef bOk Returns Handle
      Handle hoJson
      String sVerb
      Send PreHttpRequest hoJsonRequest sFilePath
      Move "POST" to sVerb
      Get HttpVerbJsonWebForm sHost sFilePath hoJsonRequest sVerb (&bOk) to hoJson
      Get PostHttpRequest sHost sFilePath hoJsonRequest sVerb (&bOk) False hoJson to hoJson
      Function_Return hoJson
The methods PreHttpRequest/PostHttpRequest are irrelevant and are specific for my subclasses.