How matching works
JSON. Object keys are compared by name, so key order does not matter. Arrays can be compared three ways:
- By key field. Elements are paired by an identifying field: the field named under Key field name, or the first of id, name, key, self, identifier and uid that is unique on both sides. Unpaired elements show as added or removed.
- By position. The element at index 0 is compared with index 0, and so on. Extra elements at the end show as added or removed.
- As unordered set. Order is ignored. Each element is compared whole, so a changed element shows as one removal and one addition.
XML. Elements are matched by tag plus a key attribute (name, id or key by default). Reordering siblings is not a change. Elements with no key attribute are matched by tag and order among their siblings. Whitespace between tags is ignored.
What the IdentityIQ preset ignores
The SailPoint IdentityIQ checkbox ignores the attributes IdentityIQ rewrites on every export, so two exports of the same object only differ in real content. It ignores these attributes on every element:
Ignored keys, attributes and elements are removed before comparison. They never appear in the results.
Results and downloads
- Split (side by side) and Unified show the result as a git diff: hunks with
@@ headers, line numbers, and context lines you can widen. Both documents are first normalised with your options (ignored keys removed, keys and matched elements in a common order, indented), so reordering is not a change. Line numbers refer to that normalised text, not your original. Download .patch gives a unified diff of it.
- Changes is the list of semantic differences. ADD, REMOVE and CHANGE mark each difference. The path shows where it is. XML paths use element keys such as
/sailpoint/Application[name=HR Feed]/@type.
- Filters and search narrow the list. Copy paths copies only the paths you can see.
- The Markdown report always lists every difference, whatever the filters.
- JSON Patch (RFC 6902) is offered only for JSON compared with Arrays set to By position, because patch paths are array positions.
- Long lists show 500 changes at a time. Use Show more to see the rest.
Limits
- No move detection. An element that moved within an array shows as a removal and an addition.
- JSON Patch only works for JSON with Arrays set to By position.
- Very large files can make the page slow while they are compared.
- Documents are never uploaded. The options are saved in this browser. The documents are not.