от души рекомендую заменить TJSONObject на XSuperObject https://github.com/onryldz/x-superobject
код будет таким примерно
uses
XSuperObject;
...
procedure TForm1.b1Click(Sender: TObject);
var
x:ISuperObject;
arr:ISuperArray;
str:string;
begin
X:=TSuperObject.Create();
X.S['jsonrpc'] := '2.0';
X.S['method'] := 'get_accounts';
X.I['id'] := 1;
arr:=TSuperArray.Create();
arr.Add('captain');
X.A['params']:=arr;
...
str:=X.AsJSON();
...
но для начала вам нужно убедиться, что для правильного запроса правильный ответ. ваша строка с образцом не совпадает только в id
у вас это строка, а в приведенных примерах - число. может, в этом проблема
h:=THTTPClient.Create();
// h.Accept := 'application/json'
// h.AcceptCharSet := 'UTF-8';
src:=TStringStream.Create('{"jsonrpc":"2.0","method":"get_accounts","id":1,"params":["captain"]}');
res:=TStringStream.Create();
resp:=h.Post(URL,src,res);
if resp.StatusCode=200 then
begin
ShowMessage('Ответ'+sLineBreak+res.DataString);
end;
FreeAndNil(h);
FreeAndNil(res);
FreeAndNil(src);
так же может быть, нужно правильно указывать кодировку запроса-ответа и другие заголовки HTTP
проверьте этот код. а потом уже делайте JSON любым способом