github.com/spyzhov/ajson (go): Package ajson implements decoding of JSON as defined in RFC 7159 without predefined mapping to a struct of golang, with support of JSONPath.  All JSON structs reflects to a custom struct of Node, witch can be presented by it type and value.  Method Unmarshal will scan all the byte slice to create a root node of JSON structure, with all it behaviors.  Each Node has it's own type and calculated value, which will be calculated on demand. Calculated value saves in atomic.Value, so it's thread safe.  Method JSONPath will returns slice of founded elements in current JSON data, by it's JSONPath.  JSONPath selection described at http://goessner.net/articles/JsonPath/  JSONPath expressions always refer to a JSON structure in the same way as XPath expression are used in combination with an XML document. Since a JSON structure is usually anonymous and doesn't necessarily have a "root member object" JSONPath assumes the abstract name $ assigned to the outer level object.  JSONPath expressions can use the dot–notation  or the bracket–notation  for input pathes. Internal or output pathes will always be converted to the more general bracket–notation.  JSONPath allows the wildcard symbol * for member names and array indices. It borrows the descendant operator '..' from E4X and the array slice syntax proposal [start:end:step] from ECMASCRIPT 4.  Expressions of the underlying scripting language (<expr>) can be used as an alternative to explicit names or indices as in  using the symbol '@' for the current object. Filter expressions are supported via the syntax ?(<boolean expr>) as in  Here is a complete overview and a side by side comparison of the JSONPath syntax elements with its XPath counterparts.  Package has several predefined constants. You are free to add new one with AddConstant  Package has several predefined operators. You are free to add new one with AddOperator  Operator precedence: https://golang.org/ref/spec#Operator_precedence  Arithmetic operators: https://golang.org/ref/spec#Arithmetic_operators  Package has several predefined functions. You are free to add new one with AddFunction
Keywords: golang|golang-package|json|json-parser|jsonpath