It's
You can do this with the Scripting component:
Namespace
System.Web.Script.Serialization
Then in the Source Code section, replace obj with your value you could pass in:
var json = new JavaScriptSerializer().Serialize(obj);
return json;
I tested it with the ADUser DT, that was passed in as a parameter then used in place of obj and it returned:
{"Guid":null,"Name":null,"FirstName":null,"Initials":null,"LastName":null,"EmailAddress":null,"DisplayName":null,"Description":null,"Office":null,"TelephoneNumber":null,"TelephoneNumberAdditionalList":null,"USNChanged":0,"WebPage":null,"AccountControl":0,"Assistant":null,"Changed":"\/Date(-62135596800000)\/","CommonName":"Alex","Created":"\/Date(-62135596800000)\/","Department":null,"DistinguishedName":null,"Path":null,"CellPhone":null,"EmployeeID":null,"FullDisplayName":null,"HomePhone":null,"MiddleInitial":null,"Notes":null,"POBox":null,"ZipCode":null,"WebPageAdditionalList":null,"MemberOf":null,"MemberOfDn":null,"MembersDn":null,"Street":null,"PostOfficeBox":null,"City":"","State":null,"PostalCode":null,"CountryCode":null,"CountryA2":null,"CountryName":null,"UserLogonName":null,"MiddleName":null,"HomeDirectory":null,"HomeDrive":null,"EmployeeId":null,"UserPrincipalName":null,"SamAccountName":null,"AllowReversiblePasswordEncryption":false,"UserCannotChangePassword":false,"ScriptPath":null,"PasswordNotRequired":false,"PasswordNeverExpires":false,"StorePasswordUsingReversibleEncription":false,"SmartcardLogonRequired":false,"AccountIsDisabled":false,"AccountExpirationDate":null,"LastModifiedDate":null,"AccountIsTrustedForDelegation":false,"ProfilePath":null,"LogonScript":null,"HomeFolder":null,"HomePhoneNumberAdditionalList":null,"Pager":null,"PagerAdditionalList":null,"MobilePhoneNumber":null,"MobilePhoneNumberAdditionalList":null,"FaxNumber":null,"FaxNumberAdditionalList":null,"IpPhone":null,"IpPhoneAdditionalList":null,"PhoneNotes":null,"OrganizationTitle":null,"OrganizationDepartment":null,"Company":null,"Manager":null,"EmployeeNumber":null,"EmployeeType":null}