Great question. A few reasons:
1. JSON Mask doesn't alter the structure of the document. It doesn't select elements (like JSONPath or JSONSelect), but rather filters the parts of the object that you don't need. To illustrate that point, instead of getting "[{a: 1}, {z: 1}]" from the example above, with JSON Mask you get "{p: {a: 1}, z: 1}". This is important to me because I made this specifically to work with HTTP resources, the structure of which I didn't want to change.
2. It's
faster for the types of selectors it supports (the syntax is simple, so there are only a handful). Take a look at
http://jsperf.com/jsonpath-vs-jsonmask (61% faster on selecting items from an array in Chrome). It
can be even faster if you pre-compile the query with `jsonMask.compile()` and then use `jsonMask.parse()`. But that, of course, only works when you know the query ahead of time.
3. It has a scary mascot :)
- Yuriy