anchor.diff:    Result := '';
     if Assigned(FResponse) then
       Result := FResponse.ToJSON;
  +end;
  +
  +function TMARSClientResourceJSON.HasJSONResponse: Boolean;
  +begin
  +  Result := Assigned(FResponse);
  +end;
  +
  +function TMARSClientResourceJSON.HasResponseContent: Boolean;
  +begin
  +  Result := Assigned(FResponse);
   end;
   
   procedure TMARSClientResourceJSON.POST(const AJSONValue: TJSONValue;
  
positive.code:     {$endif}
       or pidAndroid)]
    {$endif}
    TMARSClientResourceJSON = class(TMARSClientResource)
    private
      FResponse: TJSONValue;
    protected
      procedure AfterGET(const AContent: TStream); override;
      procedure AfterPOST(const AContent: TStream); override;
      function GetResponseAsString: string; virtual;
    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
  
  
negative.code:   );
  end;
  
  procedure TMARSClientResourceJSON.RefreshResponse(const AContent: TStream);
  var
    LSubscriber: TNotifyEvent;
  begin
    if Assigned(FResponse) then
      FResponse.Free;
    FResponse := StreamToJSONValue(AContent);
  
    for LSubscriber in FNotifyList do
      LSubscriber(Self);
  end;
  
  procedure TMARSClientResourceJSON.RemoveJSONChangedEvent(
    const ANotify: TNotifyEvent);
  var
    LIndex: Integer;
  begin
    LIndex := FNotifyList.IndexOf(ANotify);
    if LIndex <> -1 then
      FNotifyList.Delete(LIndex);
  end;
  
  function TMARSClientResourceJSON.ResponseAs<T>: T;
  begin
    Result := (Response as TJSONObject).ToRecord<T>;
  