A method for transforming JSON data, the method comprising: receiving, at a computer, a first object specified using JavaScript Object Notation, the first object having a set of one or more attributes, each attribute being of a predetermined JSON data type and having at least one value; receiving, at the computer, a second object specified using JavaScript Object Notation, the second object having a set of one or more attributes each corresponding to at least one attribute in the set of attributes of the first object and having at least one value defining one or more transformations; wherein receiving, at the computer, the second object comprises receiving an attribute of an object specified using JavaScript Object Notation having a value that defines one or more tests that define whether the one or more transformations are applicable to the first object; determining, by the computer, a positive evaluation of the one or more tests; transforming, by the computer, based on the positive evaluation of the one or more tests, the first object into a third object specified using JavaScript Object Notation based on the second object; wherein performing, by the computer, the one or more transformations comprises renaming an attribute of the first object, performing one or more numerical operations with respect to a value of an attribute of the first object, performing one or more string operations with respect to a value of an attribute of the first object, adding one or more attributes to an attribute of the first object which is also an object, or removing one or more attributes from an attribute of the first object which is also an object; and storing the third object in a storage device associated with the computer. receiving, at a computer, a first object specified using JavaScript Object Notation, the first object having a set of one or more attributes, each attribute being of a predetermined JSON data type and having at least one value; receiving, at the computer, a second object specified using JavaScript Object Notation, the second object having a set of one or more attributes each corresponding to at least one attribute in the set of attributes of the first object and having at least one value defining one or more transformations; wherein receiving, at the computer, the second object comprises receiving an attribute of an object specified using JavaScript Object Notation having a value that defines one or more tests that define whether the one or more transformations are applicable to the first object; determining, by the computer, a positive evaluation of the one or more tests; transforming, by the computer, based on the positive evaluation of the one or more tests, the first object into a third object specified using JavaScript Object Notation based on the second object; wherein performing, by the computer, the one or more transformations comprises renaming an attribute of the first object, performing one or more numerical operations with respect to a value of an attribute of the first object, performing one or more string operations with respect to a value of an attribute of the first object, adding one or more attributes to an attribute of the first object which is also an object, or removing one or more attributes from an attribute of the first object which is also an object; and storing the third object in a storage device associated with the computer.