├── src
├── docker_env_file.txt
├── wrap_in_docker.sh
├── upgrade.sh
├── oneliner_json.py
├── pretty_json.py
├── canonical_json.py
├── with_docker.sh
├── clean.sh
└── sort_json_array.py
├── queries
├── empty
│ ├── selector
│ └── document.json
├── root
│ ├── selector
│ └── document.json
├── union
│ ├── selector
│ └── document.json
├── root_on_scalar
│ ├── selector
│ └── document.json
├── array_slice
│ ├── selector
│ └── document.json
├── dot_notation
│ ├── selector
│ └── document.json
├── recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── root_on_scalar_false
│ ├── selector
│ └── document.json
├── root_on_scalar_true
│ ├── selector
│ └── document.json
├── bracket_notation
│ ├── selector
│ └── document.json
├── dot_notation_on_array
│ ├── selector
│ └── document.json
├── dot_notation_without_dot
│ ├── selector
│ └── document.json
├── function_sum
│ ├── selector
│ └── document.json
├── parens_notation
│ ├── selector
│ └── document.json
├── array_slice_on_object
│ ├── selector
│ └── document.json
├── array_slice_with_open_end
│ ├── selector
│ └── document.json
├── array_slice_with_step
│ ├── selector
│ └── document.json
├── array_slice_with_step_0
│ ├── selector
│ └── document.json
├── array_slice_with_step_1
│ ├── selector
│ └── document.json
├── current_with_dot_notation
│ ├── selector
│ └── document.json
├── dot_bracket_notation
│ ├── selector
│ └── document.json
├── dot_notation_on_null_value
│ ├── selector
│ └── document.json
├── dot_notation_with_empty_path
│ ├── selector
│ └── document.json
├── dot_notation_with_number
│ ├── selector
│ └── document.json
├── dot_notation_with_number_-1
│ ├── selector
│ └── document.json
├── dot_notation_without_root
│ ├── selector
│ └── document.json
├── union_with_spaces
│ ├── selector
│ └── document.json
├── array_slice_on_exact_match
│ ├── selector
│ └── document.json
├── array_slice_with_open_start
│ ├── selector
│ └── document.json
├── array_slice_with_range_of_-1
│ ├── selector
│ └── document.json
├── array_slice_with_range_of_0
│ ├── selector
│ └── document.json
├── array_slice_with_range_of_1
│ ├── selector
│ └── document.json
├── array_slice_with_step_empty
│ ├── selector
│ └── document.json
├── array_slice_with_step_only
│ ├── selector
│ └── document.json
├── bracket_notation_with_empty_path
│ ├── selector
│ └── document.json
├── bracket_notation_with_number
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_-1
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_0
│ ├── selector
│ └── document.json
├── bracket_notation_with_spaces
│ ├── selector
│ └── document.json
├── dot_notation_after_union
│ ├── selector
│ └── document.json
├── dot_notation_on_array_value
│ ├── selector
│ └── document.json
├── dot_notation_with_dash
│ ├── selector
│ └── document.json
├── dot_notation_with_key_named_in
│ ├── selector
│ └── document.json
├── dot_notation_with_non_ASCII_key
│ ├── selector
│ └── document.json
├── dot_notation_without_root_and_dot
│ ├── selector
│ └── document.json
├── script_expression
│ ├── selector
│ └── document.json
├── union_with_keys
│ ├── selector
│ └── document.json
├── union_with_slice_and_number
│ ├── selector
│ └── document.json
├── union_with_wildcard_and_number
│ ├── selector
│ └── document.json
├── array_slice_with_negative_step
│ ├── selector
│ └── document.json
├── array_slice_with_open_start_and_end
│ ├── selector
│ └── document.json
├── bracket_notation_with_dot
│ ├── selector
│ └── document.json
├── bracket_notation_with_empty_string
│ ├── selector
│ └── document.json
├── bracket_notation_without_quotes
│ ├── selector
│ └── document.json
├── dot_notation_after_array_slice
│ ├── selector
│ └── document.json
├── dot_notation_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── dot_notation_on_empty_object_value
│ ├── selector
│ └── document.json
├── dot_notation_with_double_quotes
│ ├── selector
│ └── document.json
├── dot_notation_with_key_named_null
│ ├── selector
│ └── document.json
├── dot_notation_with_key_named_true
│ ├── selector
│ └── document.json
├── dot_notation_with_key_root_literal
│ ├── selector
│ └── document.json
├── dot_notation_with_number_on_object
│ ├── selector
│ └── document.json
├── dot_notation_with_single_quotes
│ ├── selector
│ └── document.json
├── dot_notation_with_space_padded_key
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_on_array
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_on_object
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── filter_expression_on_object
│ ├── selector
│ └── document.json
├── filter_expression_with_value
│ └── selector
├── recursive_descent_after_dot_notation
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── recursive_descent_on_nested_arrays
│ ├── selector
│ └── document.json
├── union_with_duplication_from_array
│ ├── selector
│ └── document.json
├── union_with_filter
│ ├── selector
│ └── document.json
├── union_with_keys_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── array_slice_on_non_overlapping_array
│ ├── selector
│ └── document.json
├── array_slice_with_negative_step_only
│ ├── selector
│ └── document.json
├── array_slice_with_start_-1_and_open_end
│ ├── selector
│ └── document.json
├── array_slice_with_start_-2_and_open_end
│ ├── selector
│ └── document.json
├── bracket_notation_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── bracket_notation_with_double_quotes
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_on_object
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_on_string
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_dot_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_on_array
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_on_object
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── dot_bracket_notation_without_quotes
│ ├── selector
│ └── document.json
├── dot_notation_on_object_without_key
│ ├── selector
│ └── document.json
├── dot_notation_with_key_named_length
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_on_empty_array
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_on_empty_object
│ ├── selector
│ └── document.json
├── filter_expression_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── filter_expression_with_current_object
│ ├── selector
│ └── document.json
├── filter_expression_with_empty_expression
│ ├── selector
│ └── document.json
├── filter_expression_with_equals
│ └── selector
├── filter_expression_with_less_than
│ ├── selector
│ └── document.json
├── filter_expression_with_subpaths
│ ├── selector
│ └── document.json
├── filter_expression_with_value_false
│ ├── selector
│ └── document.json
├── filter_expression_with_value_null
│ ├── selector
│ └── document.json
├── filter_expression_with_value_true
│ ├── selector
│ └── document.json
├── filter_expression_without_parens
│ └── selector
├── filter_expression_without_value
│ └── selector
├── union_with_duplication_from_object
│ ├── document.json
│ └── selector
├── union_with_keys_after_array_slice
│ ├── selector
│ └── document.json
├── union_with_numbers_in_decreasing_order
│ ├── selector
│ └── document.json
├── array_slice_on_partially_overlapping_array
│ ├── selector
│ └── document.json
├── array_slice_with_open_end_and_negative_step
│ ├── selector
│ └── document.json
├── array_slice_with_open_start_and_end_on_object
│ ├── selector
│ └── document.json
├── array_slice_with_step_but_end_not_aligned
│ ├── selector
│ └── document.json
├── bracket_notation_on_object_without_key
│ ├── selector
│ └── document.json
├── bracket_notation_with_NFC_path_on_NFD_key
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_-1_on_empty_array
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_on_short_array
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_dot_wildcard
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_number_on_object
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_root_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_union_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_wildcard_literal
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_on_empty_array
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_on_empty_object
│ ├── selector
│ └── document.json
├── dot_bracket_notation_with_double_quotes
│ ├── selector
│ └── document.json
├── dot_notation_with_key_named_length_on_array
│ ├── selector
│ └── document.json
├── dot_notation_with_single_quotes_and_dot
│ ├── selector
│ └── document.json
├── filter_expression_with_addition
│ ├── selector
│ └── document.json
├── filter_expression_with_division
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_null
│ └── selector
├── filter_expression_with_equals_true
│ └── selector
├── filter_expression_with_greater_than
│ ├── selector
│ └── document.json
├── filter_expression_with_not_equals
│ └── selector
├── filter_expression_with_single_equal
│ └── selector
├── filter_expression_with_triple_equal
│ └── selector
├── union_with_keys_after_bracket_notation
│ ├── selector
│ └── document.json
├── array_slice_with_large_number_for_end
│ ├── selector
│ └── document.json
├── array_slice_with_open_start_and_end_and_step_empty
│ ├── selector
│ └── document.json
├── array_slice_with_open_start_and_negative_step
│ ├── selector
│ └── document.json
├── array_slice_with_step_and_leading_zeros
│ ├── selector
│ └── document.json
├── bracket_notation_with_empty_string_doubled_quoted
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_array_slice_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_double_quote_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_escaped_backslash
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_escaped_single_quote
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_on_null_value_array
│ ├── selector
│ └── document.json
├── dot_notation_after_bracket_notation_with_wildcard
│ ├── selector
│ └── document.json
├── dot_notation_after_filter_expression
│ ├── selector
│ └── document.json
├── dot_notation_after_recursive_descent_with_extra_dot
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── dot_notation_after_union_with_keys
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_false
│ └── selector
├── filter_expression_with_equals_object
│ └── selector
├── filter_expression_with_equals_on_object
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_string
│ ├── selector
│ └── document.json
├── filter_expression_with_in_current_object
│ ├── selector
│ └── document.json
├── filter_expression_with_less_than_or_equal
│ ├── selector
│ └── document.json
├── filter_expression_with_multiplication
│ ├── selector
│ └── document.json
├── filter_expression_with_subfilter
│ ├── selector
│ └── document.json
├── filter_expression_with_subtraction
│ ├── selector
│ └── document.json
├── filter_expression_with_tautological_comparison
│ ├── selector
│ └── document.json
├── filter_expression_with_value_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── union_with_keys_on_object_without_key
│ ├── selector
│ └── document.json
├── array_slice_with_large_number_for_start
│ ├── selector
│ └── document.json
├── bracket_notation_with_negative_number_on_short_array
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_closing_bracket_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_current_object_literal
│ ├── selector
│ └── document.json
├── bracket_notation_with_string_including_dot_wildcard
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_after_array_slice
│ ├── selector
│ └── document.json
├── dot_notation_after_bracket_notation_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── dot_notation_after_recursive_descent_after_dot_notation
│ ├── ALLOW_UNORDERED
│ └── selector
├── dot_notation_on_array_with_containing_object_matching_key
│ ├── selector
│ └── document.json
├── dot_notation_with_double_quotes_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── dot_notation_with_single_quotes_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── filter_expression_with_bracket_notation
│ ├── selector
│ └── document.json
├── filter_expression_with_bracket_notation_with_-1
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_array
│ └── selector
├── filter_expression_with_equals_on_array_of_numbers
│ ├── selector
│ └── document.json
├── filter_expression_with_greater_than_or_equal
│ ├── selector
│ └── document.json
├── filter_expression_with_greater_than_string
│ └── selector
├── filter_expression_with_in_array_of_values
│ ├── selector
│ └── document.json
├── filter_expression_with_length_function
│ ├── selector
│ └── document.json
├── filter_expression_with_length_property
│ ├── selector
│ └── document.json
├── filter_expression_with_negation_and_equals
│ ├── selector
│ └── document.json
├── filter_expression_with_negation_and_without_value
│ └── selector
├── filter_expression_with_non_singular_existence_test
│ ├── selector
│ └── document.json
├── filter_expression_with_set_wise_comparison_to_scalar
│ ├── selector
│ └── document.json
├── filter_expression_with_subpaths_deeply_nested
│ ├── selector
│ └── document.json
├── union_with_keys_after_dot_notation_with_wildcard
│ ├── selector
│ └── document.json
├── array_slice_with_negative_start_and_end_and_range_of_-1
│ ├── selector
│ └── document.json
├── array_slice_with_negative_start_and_end_and_range_of_0
│ ├── selector
│ └── document.json
├── array_slice_with_negative_start_and_end_and_range_of_1
│ ├── selector
│ └── document.json
├── array_slice_with_negative_step_and_start_greater_than_end
│ ├── selector
│ └── document.json
├── bracket_notation_with_two_literals_separated_by_dot
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_after_recursive_descent_on_scalar
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── filter_expression_with_bracket_notation_with_number
│ ├── selector
│ └── document.json
├── filter_expression_with_length_free_function
│ ├── selector
│ └── document.json
├── filter_expression_with_negation_and_less_than
│ ├── selector
│ └── document.json
├── filter_expression_with_regular_expression
│ ├── selector
│ └── document.json
├── filter_expression_with_value_from_recursive_descent
│ ├── selector
│ └── document.json
├── array_slice_with_negative_start_and_positive_end_and_range_of_-1
│ ├── selector
│ └── document.json
├── array_slice_with_negative_start_and_positive_end_and_range_of_0
│ ├── selector
│ └── document.json
├── array_slice_with_negative_start_and_positive_end_and_range_of_1
│ ├── selector
│ └── document.json
├── array_slice_with_negative_step_on_partially_overlapping_array
│ ├── selector
│ └── document.json
├── array_slice_with_positive_start_and_negative_end_and_range_of_-1
│ ├── selector
│ └── document.json
├── array_slice_with_positive_start_and_negative_end_and_range_of_0
│ ├── selector
│ └── document.json
├── array_slice_with_positive_start_and_negative_end_and_range_of_1
│ ├── selector
│ └── document.json
├── dot_notation_after_bracket_notation_with_wildcard_on_one_matching
│ ├── selector
│ └── document.json
├── filter_expression_with_boolean_and_operator
│ ├── selector
│ └── document.json
├── filter_expression_with_boolean_or_operator
│ ├── selector
│ └── document.json
├── filter_expression_with_dot_notation_with_number
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_number_with_fraction
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_number_with_leading_zeros
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_on_array_without_match
│ ├── document.json
│ └── selector
├── filter_expression_with_equals_string_in_NFC
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_with_path_and_path
│ └── selector
├── filter_expression_with_set_wise_comparison_to_set
│ ├── selector
│ └── document.json
├── union_with_repeated_matches_after_dot_notation_with_wildcard
│ ├── selector
│ └── document.json
├── array_slice_with_large_number_for_end_and_negative_step
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_special_characters_combined
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_wildcard_literal_on_object_without_key
│ ├── selector
│ └── document.json
├── dot_notation_after_bracket_notation_with_wildcard_on_some_matching
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_after_recursive_descent_on_null_value_array
│ ├── ALLOW_UNORDERED
│ ├── selector
│ └── document.json
├── filter_expression_after_dot_notation_with_wildcard_after_recursive_descent
│ ├── ALLOW_UNORDERED
│ └── selector
├── filter_expression_with_bracket_notation_with_number_on_object
│ ├── selector
│ └── document.json
├── filter_expression_with_different_grouped_operators
│ ├── selector
│ └── document.json
├── filter_expression_with_different_ungrouped_operators
│ └── selector
├── filter_expression_with_dot_notation_with_dash
│ ├── selector
│ └── document.json
├── filter_expression_with_dot_notation_with_number_on_array
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_array_with_single_quotes
│ └── selector
├── filter_expression_with_equals_number_for_dot_notation_with_star
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_on_object_with_key_matching_query
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_string_with_single_quotes
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_with_root_reference
│ ├── selector
│ └── document.json
├── filter_expression_with_local_dot_key_and_null_in_data
│ ├── selector
│ └── document.json
├── array_slice_with_large_number_for_start_end_negative_step
│ ├── selector
│ └── document.json
├── array_slice_with_start_large_negative_number_and_open_end_on_short_array
│ ├── selector
│ └── document.json
├── bracket_notation_with_quoted_string_and_unescaped_single_quote
│ ├── selector
│ └── document.json
├── bracket_notation_with_two_literals_separated_by_dot_without_quotes
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_after_dot_notation_with_wildcard_on_nested_arrays
│ ├── selector
│ └── document.json
├── filter_expression_with_boolean_and_operator_and_value_false
│ ├── selector
│ └── document.json
├── filter_expression_with_boolean_and_operator_and_value_true
│ ├── selector
│ └── document.json
├── filter_expression_with_boolean_or_operator_and_value_false
│ ├── selector
│ └── document.json
├── filter_expression_with_boolean_or_operator_and_value_true
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_array_for_array_slice_with_range_1
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_array_for_dot_notation_with_star
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_boolean_expression_value
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_number_for_array_slice_with_range_1
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_number_for_bracket_notation_with_star
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_number_on_various_representations
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_string_with_dot_literal
│ ├── selector
│ └── document.json
├── filter_expression_with_parent_axis_operator
│ └── selector
├── filter_expression_with_regular_expression_from_member
│ ├── selector
│ └── document.json
├── filter_expression_with_bracket_notation_and_current_object_literal
│ ├── selector
│ └── document.json
├── dot_notation_with_wildcard_after_dot_notation_after_dot_notation_with_wildcard
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_array_or_equals_true
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_string_with_current_object_literal
│ ├── selector
│ └── document.json
├── filter_expression_with_equals_string_with_unicode_character_escape
│ ├── selector
│ └── document.json
├── filter_expression_with_not_equals_array_or_equals_true
│ ├── selector
│ └── document.json
├── filter_expression_with_value_after_dot_notation_with_wildcard_on_array_of_objects
│ ├── selector
│ └── document.json
├── bracket_notation_with_wildcard_after_dot_notation_after_bracket_notation_with_wildcard
│ ├── selector
│ └── document.json
├── bracket_notation_with_number_after_dot_notation_with_wildcard_on_nested_arrays_with_different_length
│ ├── selector
│ └── document.json
└── filter_expression_with_negation_and_equals_array_or_equals_true
│ ├── selector
│ └── document.json
├── implementations
├── Cpp_jsoncons
│ ├── tag
│ ├── LINK
│ ├── run.sh
│ └── upgrade.sh
├── Bash_JSONPath.sh
│ ├── tag
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── build.ninja
│ └── install.sh
├── Ruby_jsonpath
│ ├── version
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── install.sh
│ ├── build.ninja
│ ├── run.sh
│ └── main.rb
├── JavaScript_brunerd
│ ├── tag
│ ├── LINK
│ ├── upgrade.sh
│ └── build.ninja
├── PHP_Goessner
│ ├── NOT_FOUND_RETURNED_AS_ERROR
│ ├── LINK
│ ├── run.sh
│ └── build.ninja
├── PHP_galbar-jsonpath
│ ├── .gitignore
│ ├── LINK
│ ├── composer.json
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── dotNET_Manatee.Json
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── build.ninja
│ └── Dotnet_Manatee.Json.csproj
├── JavaScript_Goessner
│ ├── NOT_FOUND_RETURNED_AS_ERROR
│ ├── .gitignore
│ ├── LINK
│ └── build.ninja
├── JavaScript_json-p3
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── build.ninja
│ └── package.json
├── Objective-C_SMJJSONPath
│ ├── tag
│ ├── NOT_FOUND_RETURNED_AS_ERROR_FOR_SCALAR
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── LINK
│ └── upgrade.sh
├── PHP_remorhaz-jsonpath
│ ├── .gitignore
│ ├── LINK
│ ├── composer.json
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── PHP_softcreatr-jsonpath
│ ├── .gitignore
│ ├── LINK
│ ├── composer.json
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Python_jsonpath
│ ├── NOT_FOUND_RETURNED_AS_ERROR
│ ├── LINK
│ ├── requirements.txt
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── dotNET_Json.NET
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── build.ninja
│ └── Dotnet_Json.NET.csproj
├── dotNET_JsonCons.JsonPath
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── Dotnet_JsonCons.JsonPath.csproj
│ └── build.ninja
├── dotNET_JsonPathLib
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── nuget.config
│ ├── run.sh
│ └── build.ninja
├── JavaScript_jsonpath
│ ├── .gitignore
│ ├── LINK
│ ├── run.sh
│ ├── upgrade.sh
│ ├── build.ninja
│ └── package.json
├── JavaScript_jsonpathly
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── build.ninja
│ └── package.json
├── dotNET_JsonPath.Net
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── Dotnet_JsonPath.Net.csproj
│ └── build.ninja
├── Dart_json_path
│ ├── LINK
│ ├── .gitignore
│ ├── pubspec.yaml
│ ├── upgrade.sh
│ ├── run.sh
│ ├── lib
│ │ └── Dart_json_path.dart
│ └── build.ninja
├── Elixir_jaxon
│ ├── LINK
│ ├── upgrade.sh
│ ├── build.ninja
│ └── lib
│ │ └── jsonpath.ex
├── Elixir_warpath
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── LINK
│ ├── upgrade.sh
│ └── build.ninja
├── JavaScript_jsonpath-plus
│ ├── .gitignore
│ ├── LINK
│ ├── upgrade.sh
│ ├── build.ninja
│ └── package.json
├── C_json-glib
│ ├── LINK
│ ├── run.sh
│ └── build.ninja
├── Clojure_json-path
│ ├── LINK
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── upgrade.sh
│ └── run.sh
├── Perl_JSON-Path
│ ├── LINK
│ ├── version
│ ├── upgrade.sh
│ ├── run.sh
│ ├── install.sh
│ ├── build.ninja
│ ├── main.pl
│ └── cpanm.sh
├── Raku_JSON-Path
│ ├── LINK
│ ├── run.sh
│ ├── build.ninja
│ └── main.p6
├── Scala_jsonpath
│ ├── LINK
│ └── run.sh
├── Swift_Sextant
│ ├── LINK
│ ├── .gitignore
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Elixir_ExJsonPath
│ ├── LINK
│ ├── upgrade.sh
│ ├── build.ninja
│ └── mix.lock
├── Haskell_jsonpath
│ ├── LINK
│ ├── .gitignore
│ ├── cabal.project
│ ├── run.sh
│ ├── install.sh
│ └── build.ninja
├── Java_com.jayway.jsonpath
│ ├── NOT_FOUND_RETURNED_AS_ERROR_FOR_SCALAR
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── LINK
│ ├── upgrade.sh
│ └── run.sh
├── Python_jsonpath-ng
│ ├── LINK
│ ├── requirements.txt
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Rust_jsonpath
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── Cargo.toml
│ └── build.ninja
├── Rust_jsonpath_lib
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── Cargo.toml
│ └── build.ninja
├── Erlang_ejsonpath
│ ├── LINK
│ ├── rebar.config
│ ├── src
│ │ └── jsonpath.app.src
│ ├── upgrade.sh
│ ├── build.ninja
│ └── run.sh
├── Golang_github.com-bhmj-jsonslice
│ ├── NOT_FOUND_RETURNED_AS_ERROR_FOR_SCALAR
│ ├── LINK
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── upgrade.sh
│ ├── go.mod
│ ├── run.sh
│ └── build.ninja
├── Golang_github.com-ohler55-ojg
│ ├── LINK
│ ├── go.mod
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Java_com.github.jsurfer
│ ├── LINK
│ ├── upgrade.sh
│ └── run.sh
├── Kotlin_com.nfeld.jsonpathkt
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── LINK
│ ├── upgrade.sh
│ └── run.sh
├── Python_jsonpath2
│ ├── LINK
│ ├── requirements.txt
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Python_python-jsonpath
│ ├── LINK
│ ├── requirements.txt
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Rust_jsonpath_plus
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── Cargo.toml
│ └── build.ninja
├── Golang_github.com-oliveagle-jsonpath
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── LINK
│ ├── upgrade.sh
│ ├── go.mod
│ ├── run.sh
│ ├── go.sum
│ └── build.ninja
├── Golang_github.com-spyzhov-ajson
│ ├── LINK
│ ├── go.mod
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Golang_github.com-theory-jsonpath
│ ├── LINK
│ ├── go.mod
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Java_com.github.xmljacquard.ajp
│ ├── LINK
│ └── upgrade.sh
├── Python_jsonpath-rw
│ ├── LINK
│ ├── requirements.txt
│ ├── upgrade.sh
│ ├── run.sh
│ └── build.ninja
├── Rust_serde_json_path
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── Cargo.toml
│ └── build.ninja
├── Golang_github.com-PaesslerAG-jsonpath
│ ├── SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── go.mod
│ └── build.ninja
└── Golang_github.com-vmware-labs-yaml-jsonpath
│ ├── LINK
│ ├── upgrade.sh
│ ├── run.sh
│ ├── build.ninja
│ └── go.mod
├── .gitignore
└── comparison
└── README.md
/src/docker_env_file.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/empty/selector:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/queries/root/selector:
--------------------------------------------------------------------------------
1 | $
2 |
--------------------------------------------------------------------------------
/queries/union/selector:
--------------------------------------------------------------------------------
1 | $[0,1]
2 |
--------------------------------------------------------------------------------
/queries/root_on_scalar/selector:
--------------------------------------------------------------------------------
1 | $
2 |
--------------------------------------------------------------------------------
/implementations/Cpp_jsoncons/tag:
--------------------------------------------------------------------------------
1 | v1.5.0
2 |
--------------------------------------------------------------------------------
/queries/array_slice/selector:
--------------------------------------------------------------------------------
1 | $[1:3]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation/selector:
--------------------------------------------------------------------------------
1 | $.key
2 |
--------------------------------------------------------------------------------
/queries/recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..
2 |
--------------------------------------------------------------------------------
/queries/root_on_scalar/document.json:
--------------------------------------------------------------------------------
1 | 42
2 |
--------------------------------------------------------------------------------
/queries/root_on_scalar_false/selector:
--------------------------------------------------------------------------------
1 | $
2 |
--------------------------------------------------------------------------------
/queries/root_on_scalar_true/selector:
--------------------------------------------------------------------------------
1 | $
2 |
--------------------------------------------------------------------------------
/implementations/Bash_JSONPath.sh/tag:
--------------------------------------------------------------------------------
1 | v0.0.21
2 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/version:
--------------------------------------------------------------------------------
1 | 1.1.5
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation/selector:
--------------------------------------------------------------------------------
1 | $['key']
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_array/selector:
--------------------------------------------------------------------------------
1 | $.key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_without_dot/selector:
--------------------------------------------------------------------------------
1 | $a
2 |
--------------------------------------------------------------------------------
/queries/function_sum/selector:
--------------------------------------------------------------------------------
1 | $.data.sum()
2 |
--------------------------------------------------------------------------------
/queries/parens_notation/selector:
--------------------------------------------------------------------------------
1 | $(key,more)
2 |
--------------------------------------------------------------------------------
/implementations/JavaScript_brunerd/tag:
--------------------------------------------------------------------------------
1 | v0.9.19
2 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/.gitignore:
--------------------------------------------------------------------------------
1 | /gems/
2 |
--------------------------------------------------------------------------------
/queries/array_slice_on_object/selector:
--------------------------------------------------------------------------------
1 | $[1:3]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_end/selector:
--------------------------------------------------------------------------------
1 | $[1:]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step/selector:
--------------------------------------------------------------------------------
1 | $[0:3:2]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_0/selector:
--------------------------------------------------------------------------------
1 | $[0:3:0]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_1/selector:
--------------------------------------------------------------------------------
1 | $[0:3:1]
2 |
--------------------------------------------------------------------------------
/queries/current_with_dot_notation/selector:
--------------------------------------------------------------------------------
1 | @.a
2 |
--------------------------------------------------------------------------------
/queries/dot_bracket_notation/selector:
--------------------------------------------------------------------------------
1 | $.['key']
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_null_value/selector:
--------------------------------------------------------------------------------
1 | $.key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_empty_path/selector:
--------------------------------------------------------------------------------
1 | $.
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_number/selector:
--------------------------------------------------------------------------------
1 | $.2
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_number_-1/selector:
--------------------------------------------------------------------------------
1 | $.-1
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_without_root/selector:
--------------------------------------------------------------------------------
1 | .key
2 |
--------------------------------------------------------------------------------
/queries/empty/document.json:
--------------------------------------------------------------------------------
1 | {"a": 42, "": 21}
2 |
--------------------------------------------------------------------------------
/queries/root_on_scalar_false/document.json:
--------------------------------------------------------------------------------
1 | false
2 |
--------------------------------------------------------------------------------
/queries/root_on_scalar_true/document.json:
--------------------------------------------------------------------------------
1 | true
2 |
--------------------------------------------------------------------------------
/queries/union_with_spaces/selector:
--------------------------------------------------------------------------------
1 | $[ 0 , 1 ]
2 |
--------------------------------------------------------------------------------
/implementations/PHP_Goessner/NOT_FOUND_RETURNED_AS_ERROR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/PHP_galbar-jsonpath/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_Manatee.Json/.gitignore:
--------------------------------------------------------------------------------
1 | /obj
2 |
--------------------------------------------------------------------------------
/queries/array_slice_on_exact_match/selector:
--------------------------------------------------------------------------------
1 | $[0:5]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start/selector:
--------------------------------------------------------------------------------
1 | $[:2]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_range_of_-1/selector:
--------------------------------------------------------------------------------
1 | $[2:1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_range_of_0/selector:
--------------------------------------------------------------------------------
1 | $[0:0]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_range_of_1/selector:
--------------------------------------------------------------------------------
1 | $[0:1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_empty/selector:
--------------------------------------------------------------------------------
1 | $[1:3:]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_only/selector:
--------------------------------------------------------------------------------
1 | $[::2]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_empty_path/selector:
--------------------------------------------------------------------------------
1 | $[]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number/selector:
--------------------------------------------------------------------------------
1 | $[2]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_-1/selector:
--------------------------------------------------------------------------------
1 | $[-1]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_0/selector:
--------------------------------------------------------------------------------
1 | $[0]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_spaces/selector:
--------------------------------------------------------------------------------
1 | $[ 'a' ]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_union/selector:
--------------------------------------------------------------------------------
1 | $[0,2].key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_array/document.json:
--------------------------------------------------------------------------------
1 | [0, 1]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_array_value/selector:
--------------------------------------------------------------------------------
1 | $.key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_dash/selector:
--------------------------------------------------------------------------------
1 | $.key-dash
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_in/selector:
--------------------------------------------------------------------------------
1 | $.in
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_non_ASCII_key/selector:
--------------------------------------------------------------------------------
1 | $.屬性
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_without_root_and_dot/selector:
--------------------------------------------------------------------------------
1 | key
2 |
--------------------------------------------------------------------------------
/queries/function_sum/document.json:
--------------------------------------------------------------------------------
1 | {"data": [1,2,3,4]}
2 |
--------------------------------------------------------------------------------
/queries/script_expression/selector:
--------------------------------------------------------------------------------
1 | $[(@.length-1)]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys/selector:
--------------------------------------------------------------------------------
1 | $['key','another']
2 |
--------------------------------------------------------------------------------
/queries/union_with_slice_and_number/selector:
--------------------------------------------------------------------------------
1 | $[1:3,4]
2 |
--------------------------------------------------------------------------------
/queries/union_with_wildcard_and_number/selector:
--------------------------------------------------------------------------------
1 | $[*,1]
2 |
--------------------------------------------------------------------------------
/implementations/Bash_JSONPath.sh/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 |
--------------------------------------------------------------------------------
/implementations/JavaScript_Goessner/NOT_FOUND_RETURNED_AS_ERROR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/JavaScript_json-p3/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 |
--------------------------------------------------------------------------------
/implementations/Objective-C_SMJJSONPath/tag:
--------------------------------------------------------------------------------
1 | version-1.0.3
2 |
--------------------------------------------------------------------------------
/implementations/PHP_remorhaz-jsonpath/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor
2 |
--------------------------------------------------------------------------------
/implementations/PHP_softcreatr-jsonpath/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath/NOT_FOUND_RETURNED_AS_ERROR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/dotNET_Json.NET/.gitignore:
--------------------------------------------------------------------------------
1 | /bin
2 | /obj
3 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonCons.JsonPath/.gitignore:
--------------------------------------------------------------------------------
1 | /obj
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPathLib/.gitignore:
--------------------------------------------------------------------------------
1 | /bin
2 | /obj
3 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step/selector:
--------------------------------------------------------------------------------
1 | $[3:0:-2]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_end/selector:
--------------------------------------------------------------------------------
1 | $[:]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_dot/selector:
--------------------------------------------------------------------------------
1 | $['two.some']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_empty_string/selector:
--------------------------------------------------------------------------------
1 | $['']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_without_quotes/selector:
--------------------------------------------------------------------------------
1 | $[key]
2 |
--------------------------------------------------------------------------------
/queries/current_with_dot_notation/document.json:
--------------------------------------------------------------------------------
1 | {"a": 1}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_array_slice/selector:
--------------------------------------------------------------------------------
1 | $[0:2].key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_empty_object_value/selector:
--------------------------------------------------------------------------------
1 | $.key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_double_quotes/selector:
--------------------------------------------------------------------------------
1 | $."key"
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_null/selector:
--------------------------------------------------------------------------------
1 | $.null
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_true/selector:
--------------------------------------------------------------------------------
1 | $.true
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_root_literal/selector:
--------------------------------------------------------------------------------
1 | $.$
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_number_on_object/selector:
--------------------------------------------------------------------------------
1 | $.2
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes/selector:
--------------------------------------------------------------------------------
1 | $.'key'
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_space_padded_key/selector:
--------------------------------------------------------------------------------
1 | $. a
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_array/selector:
--------------------------------------------------------------------------------
1 | $.*
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_object/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_object/selector:
--------------------------------------------------------------------------------
1 | $.*
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_on_object/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key)]
2 |
--------------------------------------------------------------------------------
/queries/recursive_descent_after_dot_notation/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/recursive_descent_on_nested_arrays/selector:
--------------------------------------------------------------------------------
1 | $..*
2 |
--------------------------------------------------------------------------------
/queries/union/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/union_with_duplication_from_array/selector:
--------------------------------------------------------------------------------
1 | $[0,0]
2 |
--------------------------------------------------------------------------------
/queries/union_with_filter/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key<3),?(@.key>6)]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpathly/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPath.Net/.gitignore:
--------------------------------------------------------------------------------
1 | /obj
2 | /bin
3 | /.vs
--------------------------------------------------------------------------------
/queries/array_slice_on_non_overlapping_array/selector:
--------------------------------------------------------------------------------
1 | $[7:10]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step_only/selector:
--------------------------------------------------------------------------------
1 | $[::-2]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_start_-1_and_open_end/selector:
--------------------------------------------------------------------------------
1 | $[-1:]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_start_-2_and_open_end/selector:
--------------------------------------------------------------------------------
1 | $[-2:]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/bracket_notation_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..[0]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_double_quotes/selector:
--------------------------------------------------------------------------------
1 | $["key"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_on_object/selector:
--------------------------------------------------------------------------------
1 | $[0]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_on_string/selector:
--------------------------------------------------------------------------------
1 | $[0]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_dot_literal/selector:
--------------------------------------------------------------------------------
1 | $['.']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_array/selector:
--------------------------------------------------------------------------------
1 | $[*]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_object/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_object/selector:
--------------------------------------------------------------------------------
1 | $[*]
2 |
--------------------------------------------------------------------------------
/queries/dot_bracket_notation_without_quotes/selector:
--------------------------------------------------------------------------------
1 | $.[key]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_object_without_key/selector:
--------------------------------------------------------------------------------
1 | $.missing
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_length/selector:
--------------------------------------------------------------------------------
1 | $.length
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_empty_array/selector:
--------------------------------------------------------------------------------
1 | $.*
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_empty_object/selector:
--------------------------------------------------------------------------------
1 | $.*
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_without_dot/document.json:
--------------------------------------------------------------------------------
1 | {"a": 1, "$a": 2}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_current_object/selector:
--------------------------------------------------------------------------------
1 | $[?(@)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_empty_expression/selector:
--------------------------------------------------------------------------------
1 | $[?()]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_less_than/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key<42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subpaths/selector:
--------------------------------------------------------------------------------
1 | $[?(@.a.b==3)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_false/selector:
--------------------------------------------------------------------------------
1 | $[?(false)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_null/selector:
--------------------------------------------------------------------------------
1 | $[?(null)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_true/selector:
--------------------------------------------------------------------------------
1 | $[?(true)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_without_parens/selector:
--------------------------------------------------------------------------------
1 | $[?@.key==42]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_without_value/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key)]
2 |
--------------------------------------------------------------------------------
/queries/recursive_descent_after_dot_notation/selector:
--------------------------------------------------------------------------------
1 | $.key..
2 |
--------------------------------------------------------------------------------
/queries/union_with_duplication_from_array/document.json:
--------------------------------------------------------------------------------
1 | ["a"]
2 |
--------------------------------------------------------------------------------
/queries/union_with_duplication_from_object/document.json:
--------------------------------------------------------------------------------
1 | {"a":1}
2 |
--------------------------------------------------------------------------------
/queries/union_with_duplication_from_object/selector:
--------------------------------------------------------------------------------
1 | $['a','a']
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_array_slice/selector:
--------------------------------------------------------------------------------
1 | $[:]['c','d']
2 |
--------------------------------------------------------------------------------
/queries/union_with_numbers_in_decreasing_order/selector:
--------------------------------------------------------------------------------
1 | $[4,1]
2 |
--------------------------------------------------------------------------------
/queries/union_with_slice_and_number/document.json:
--------------------------------------------------------------------------------
1 | [1,2,3,4,5]
2 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/f3ath/jessie
2 |
--------------------------------------------------------------------------------
/implementations/Elixir_jaxon/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/boudra/jaxon
2 |
--------------------------------------------------------------------------------
/implementations/Elixir_warpath/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/JavaScript_json-p3/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/jg-rp/json-p3
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath-plus/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_Json.NET/LINK:
--------------------------------------------------------------------------------
1 | https://www.newtonsoft.com/json
2 |
--------------------------------------------------------------------------------
/queries/array_slice_on_partially_overlapping_array/selector:
--------------------------------------------------------------------------------
1 | $[1:10]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_end_and_negative_step/selector:
--------------------------------------------------------------------------------
1 | $[3::-1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_end_on_object/selector:
--------------------------------------------------------------------------------
1 | $[:]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_but_end_not_aligned/selector:
--------------------------------------------------------------------------------
1 | $[0:4:2]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/bracket_notation_on_object_without_key/selector:
--------------------------------------------------------------------------------
1 | $['missing']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_NFC_path_on_NFD_key/selector:
--------------------------------------------------------------------------------
1 | $['ü']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_-1_on_empty_array/selector:
--------------------------------------------------------------------------------
1 | $[-1]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_on_short_array/selector:
--------------------------------------------------------------------------------
1 | $[1]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_dot_wildcard/selector:
--------------------------------------------------------------------------------
1 | $['.*']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_number_on_object/selector:
--------------------------------------------------------------------------------
1 | $['0']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_root_literal/selector:
--------------------------------------------------------------------------------
1 | $['$']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_union_literal/selector:
--------------------------------------------------------------------------------
1 | $[',']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_wildcard_literal/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_wildcard_literal/selector:
--------------------------------------------------------------------------------
1 | $['*']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_empty_array/selector:
--------------------------------------------------------------------------------
1 | $[*]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_empty_object/selector:
--------------------------------------------------------------------------------
1 | $[*]
2 |
--------------------------------------------------------------------------------
/queries/dot_bracket_notation_with_double_quotes/selector:
--------------------------------------------------------------------------------
1 | $.["key"]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_length_on_array/selector:
--------------------------------------------------------------------------------
1 | $.length
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes_and_dot/selector:
--------------------------------------------------------------------------------
1 | $.'some.key'
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_empty_array/document.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_empty_object/document.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_addition/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key+50==100)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_division/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key/10==5)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_null/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==null)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_true/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==true)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_greater_than/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_not_equals/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key!=42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_single_equal/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_triple_equal/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key===42)]
2 |
--------------------------------------------------------------------------------
/queries/recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | [{"a": {"b": "c"}}, [0, 1]]
2 |
--------------------------------------------------------------------------------
/queries/recursive_descent_on_nested_arrays/document.json:
--------------------------------------------------------------------------------
1 | [[0], [1]]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_bracket_notation/selector:
--------------------------------------------------------------------------------
1 | $[0]['c','d']
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..['c','d']
2 |
--------------------------------------------------------------------------------
/queries/union_with_spaces/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/implementations/C_json-glib/LINK:
--------------------------------------------------------------------------------
1 | https://gitlab.gnome.org/GNOME/json-glib
2 |
--------------------------------------------------------------------------------
/implementations/Clojure_json-path/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/gga/json-path
2 |
--------------------------------------------------------------------------------
/implementations/Clojure_json-path/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Elixir_warpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/Cleidiano/warpath/
2 |
--------------------------------------------------------------------------------
/implementations/Objective-C_SMJJSONPath/NOT_FOUND_RETURNED_AS_ERROR_FOR_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/LINK:
--------------------------------------------------------------------------------
1 | https://metacpan.org/pod/JSON::Path
2 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/version:
--------------------------------------------------------------------------------
1 | POPEFELIX/JSON-Path-1.0.6.tar.gz
2 |
--------------------------------------------------------------------------------
/implementations/Raku_JSON-Path/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/jnthn/json-path
2 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/joshbuddy/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Scala_jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/gatling/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Swift_Sextant/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/KittyMac/Sextant
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_end/selector:
--------------------------------------------------------------------------------
1 | $[2:113667776004]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_end_and_step_empty/selector:
--------------------------------------------------------------------------------
1 | $[::]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_negative_step/selector:
--------------------------------------------------------------------------------
1 | $[:2:-1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_and_leading_zeros/selector:
--------------------------------------------------------------------------------
1 | $[010:024:010]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_NFC_path_on_NFD_key/document.json:
--------------------------------------------------------------------------------
1 | {"ü": 42}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_empty_string_doubled_quoted/selector:
--------------------------------------------------------------------------------
1 | $[""]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_-1_on_empty_array/document.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_on_string/document.json:
--------------------------------------------------------------------------------
1 | "Hello World"
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_array_slice_literal/selector:
--------------------------------------------------------------------------------
1 | $[':']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_double_quote_literal/selector:
--------------------------------------------------------------------------------
1 | $['"']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_escaped_backslash/selector:
--------------------------------------------------------------------------------
1 | $['\\']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_escaped_single_quote/selector:
--------------------------------------------------------------------------------
1 | $['\'']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_empty_array/document.json:
--------------------------------------------------------------------------------
1 | []
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_empty_object/document.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_null_value_array/selector:
--------------------------------------------------------------------------------
1 | $[*]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_with_wildcard/selector:
--------------------------------------------------------------------------------
1 | $[*].a
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_filter_expression/selector:
--------------------------------------------------------------------------------
1 | $[?(@.id==42)].name
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent_with_extra_dot/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_union_with_keys/selector:
--------------------------------------------------------------------------------
1 | $['one','three'].key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_null_value/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": null
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_object_without_key/document.json:
--------------------------------------------------------------------------------
1 | {"key": "value"}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..*
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..[?(@.id==2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_false/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==false)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_object/selector:
--------------------------------------------------------------------------------
1 | $[?(@.d=={"k":"v"})]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_object/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=="value")]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_in_current_object/selector:
--------------------------------------------------------------------------------
1 | $[?(2 in @.d)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_less_than_or_equal/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key<=42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_multiplication/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key*2==100)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subfilter/selector:
--------------------------------------------------------------------------------
1 | $[?(@.a[?(@.price>10)])]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subtraction/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key-50==-100)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_tautological_comparison/selector:
--------------------------------------------------------------------------------
1 | $[?(1==1)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/parens_notation/document.json:
--------------------------------------------------------------------------------
1 | {"key": 1, "some": 2, "more": 3}
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_on_object_without_key/selector:
--------------------------------------------------------------------------------
1 | $['missing','key']
2 |
--------------------------------------------------------------------------------
/queries/union_with_numbers_in_decreasing_order/document.json:
--------------------------------------------------------------------------------
1 | [1,2,3,4,5]
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | .ninja_deps
3 | .ninja_log
4 | /implementations/*/build/
5 |
--------------------------------------------------------------------------------
/implementations/Bash_JSONPath.sh/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/mclarkson/JSONPath.sh
2 |
--------------------------------------------------------------------------------
/implementations/Cpp_jsoncons/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/danielaparker/jsoncons
2 |
--------------------------------------------------------------------------------
/implementations/Elixir_ExJsonPath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/ispirata/exjsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Haskell_jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/akshaymankar/jsonpath-hs
--------------------------------------------------------------------------------
/implementations/JavaScript_brunerd/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/brunerd/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath-plus/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/s3u/JSONPath
2 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/dchester/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Java_com.jayway.jsonpath/NOT_FOUND_RETURNED_AS_ERROR_FOR_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Java_com.jayway.jsonpath/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Objective-C_SMJJSONPath/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/PHP_Goessner/LINK:
--------------------------------------------------------------------------------
1 | https://code.google.com/archive/p/jsonpath/
2 |
--------------------------------------------------------------------------------
/implementations/PHP_galbar-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/Galbar/JsonPath-PHP
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-ng/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/h2non/jsonpath-ng
2 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/greyblake/jsonpath-rs
2 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_lib/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/freestrings/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPathLib/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/atifaziz/JSONPath
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_start/selector:
--------------------------------------------------------------------------------
1 | $[-113667776004:2]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_negative_number_on_short_array/selector:
--------------------------------------------------------------------------------
1 | $[-2]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_closing_bracket_literal/selector:
--------------------------------------------------------------------------------
1 | $[']']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_current_object_literal/selector:
--------------------------------------------------------------------------------
1 | $['@']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_string_including_dot_wildcard/selector:
--------------------------------------------------------------------------------
1 | $['ni.*']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_array_slice/selector:
--------------------------------------------------------------------------------
1 | $[0:2][*]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..[*]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent_after_dot_notation/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent_with_extra_dot/selector:
--------------------------------------------------------------------------------
1 | $...key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_array_with_containing_object_matching_key/selector:
--------------------------------------------------------------------------------
1 | $.id
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_double_quotes_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_length_on_array/document.json:
--------------------------------------------------------------------------------
1 | [4, 5, 6]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_without_root/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation/selector:
--------------------------------------------------------------------------------
1 | $[?(@['key']==42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_with_-1/selector:
--------------------------------------------------------------------------------
1 | $[?(@[-1]==2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array/selector:
--------------------------------------------------------------------------------
1 | $[?(@.d==["v1","v2"])]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_array_of_numbers/selector:
--------------------------------------------------------------------------------
1 | $[?(@==42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_greater_than_or_equal/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>=42)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_greater_than_string/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>"VALUE")]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_in_array_of_values/selector:
--------------------------------------------------------------------------------
1 | $[?(@.d in [2, 3])]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_length_function/selector:
--------------------------------------------------------------------------------
1 | $[?(@.length() == 4)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_length_property/selector:
--------------------------------------------------------------------------------
1 | $[?(@.length == 4)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_equals/selector:
--------------------------------------------------------------------------------
1 | $[?(!(@.key==42))]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_without_value/selector:
--------------------------------------------------------------------------------
1 | $[?(!@.key)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_non_singular_existence_test/selector:
--------------------------------------------------------------------------------
1 | $[?(@.a.*)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_set_wise_comparison_to_scalar/selector:
--------------------------------------------------------------------------------
1 | $[?(@[*]>=4)]
--------------------------------------------------------------------------------
/queries/filter_expression_with_subpaths_deeply_nested/selector:
--------------------------------------------------------------------------------
1 | $[?(@.a.b.c==3)]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_dot_notation_with_wildcard/selector:
--------------------------------------------------------------------------------
1 | $.*['c','d']
2 |
--------------------------------------------------------------------------------
/implementations/Erlang_ejsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/ostrovok-team/ejsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/NOT_FOUND_RETURNED_AS_ERROR_FOR_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-ohler55-ojg/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/ohler55/ojg
2 |
--------------------------------------------------------------------------------
/implementations/Haskell_jsonpath/.gitignore:
--------------------------------------------------------------------------------
1 | dist-newstyle/
2 | .ghc.environment.*
3 | *~
--------------------------------------------------------------------------------
/implementations/JavaScript_Goessner/.gitignore:
--------------------------------------------------------------------------------
1 | /jsonpath.js
2 | /jsonpath_export.js
3 |
--------------------------------------------------------------------------------
/implementations/JavaScript_Goessner/LINK:
--------------------------------------------------------------------------------
1 | https://code.google.com/archive/p/jsonpath/
2 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpathly/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/atamano/jsonpathly
2 |
--------------------------------------------------------------------------------
/implementations/Java_com.github.jsurfer/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/jsurfer/JsonSurfer
2 |
--------------------------------------------------------------------------------
/implementations/Java_com.jayway.jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/json-path/JsonPath/
2 |
--------------------------------------------------------------------------------
/implementations/Kotlin_com.nfeld.jsonpathkt/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/PHP_remorhaz-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/remorhaz/php-json-path/
--------------------------------------------------------------------------------
/implementations/PHP_softcreatr-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/SoftCreatR/JSONPath
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath/LINK:
--------------------------------------------------------------------------------
1 | http://www.ultimate.com/phil/python/#jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath/requirements.txt:
--------------------------------------------------------------------------------
1 | jsonpath==0.82.2
2 | pur==7.3.3
3 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath2/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/pacifica/python-jsonpath2
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath2/requirements.txt:
--------------------------------------------------------------------------------
1 | jsonpath2==0.4.5
2 | pur==7.3.3
3 |
--------------------------------------------------------------------------------
/implementations/Python_python-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/jg-rp/python-jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_plus/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/CraftSpider/jsonpath-plus
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_Manatee.Json/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/gregsdennis/Manatee.Json
2 |
--------------------------------------------------------------------------------
/queries/array_slice/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_end_and_range_of_-1/selector:
--------------------------------------------------------------------------------
1 | $[-4:-5]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_end_and_range_of_0/selector:
--------------------------------------------------------------------------------
1 | $[-4:-4]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_end_and_range_of_1/selector:
--------------------------------------------------------------------------------
1 | $[-4:-3]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step_and_start_greater_than_end/selector:
--------------------------------------------------------------------------------
1 | $[0:3:-2]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_-1/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_on_short_array/document.json:
--------------------------------------------------------------------------------
1 | ["one element"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_closing_bracket_literal/document.json:
--------------------------------------------------------------------------------
1 | {"]": 42}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_escaped_backslash/document.json:
--------------------------------------------------------------------------------
1 | {"\\":"value"}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_two_literals_separated_by_dot/selector:
--------------------------------------------------------------------------------
1 | $['two'.'some']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_without_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_empty_object_value/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": {}
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_double_quotes_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $.."key"
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_in/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "in": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_null/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "null": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_true/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "true": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_root_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "$": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_non_ASCII_key/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "屬性": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..'key'
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent_on_scalar/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent_on_scalar/selector:
--------------------------------------------------------------------------------
1 | $..*
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_without_root_and_dot/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/filter_expression_on_object/document.json:
--------------------------------------------------------------------------------
1 | {"key": 42, "another": {"key": 1}}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_with_number/selector:
--------------------------------------------------------------------------------
1 | $[?(@[1]=='b')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_length_free_function/selector:
--------------------------------------------------------------------------------
1 | $[?(length(@) == 4)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_less_than/selector:
--------------------------------------------------------------------------------
1 | $[?(!(@.key<42))]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_regular_expression/selector:
--------------------------------------------------------------------------------
1 | $[?(@.name=~/hello.*/)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..[?(@.id)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_from_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $[?(@..child)]
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/bhmj/jsonslice
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-spyzhov-ajson/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/spyzhov/ajson
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-theory-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/theory/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Haskell_jsonpath/cabal.project:
--------------------------------------------------------------------------------
1 | packages: ./json-path-comparison.cabal
2 |
--------------------------------------------------------------------------------
/implementations/Java_com.github.xmljacquard.ajp/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/xmljacquard/ajp
2 |
--------------------------------------------------------------------------------
/implementations/Kotlin_com.nfeld.jsonpathkt/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/codeniko/JsonPathKt
2 |
--------------------------------------------------------------------------------
/implementations/Objective-C_SMJJSONPath/LINK:
--------------------------------------------------------------------------------
1 | https://codeberg.org/javerous/SMJJSONPath/
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-ng/requirements.txt:
--------------------------------------------------------------------------------
1 | jsonpath-ng==1.7.0
2 | pur==7.3.3
3 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-rw/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/kennknowles/python-jsonpath-rw
2 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-rw/requirements.txt:
--------------------------------------------------------------------------------
1 | jsonpath-rw==1.4.0
2 | pur==7.3.3
3 |
--------------------------------------------------------------------------------
/implementations/Rust_serde_json_path/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/hiltontj/serde_json_path
2 |
--------------------------------------------------------------------------------
/queries/array_slice_on_non_overlapping_array/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_positive_end_and_range_of_-1/selector:
--------------------------------------------------------------------------------
1 | $[-4:1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_positive_end_and_range_of_0/selector:
--------------------------------------------------------------------------------
1 | $[-4:2]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_positive_end_and_range_of_1/selector:
--------------------------------------------------------------------------------
1 | $[-4:3]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step_on_partially_overlapping_array/selector:
--------------------------------------------------------------------------------
1 | $[7:3:-1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_positive_start_and_negative_end_and_range_of_-1/selector:
--------------------------------------------------------------------------------
1 | $[3:-4]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_positive_start_and_negative_end_and_range_of_0/selector:
--------------------------------------------------------------------------------
1 | $[3:-3]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_positive_start_and_negative_end_and_range_of_1/selector:
--------------------------------------------------------------------------------
1 | $[3:-2]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_range_of_0/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "first",
3 | "second"
4 | ]
5 |
--------------------------------------------------------------------------------
/queries/array_slice_with_range_of_1/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "first",
3 | "second"
4 | ]
5 |
--------------------------------------------------------------------------------
/queries/array_slice_with_start_-1_and_open_end/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_start_-2_and_open_end/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_on_object_without_key/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_double_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_empty_path/document.json:
--------------------------------------------------------------------------------
1 | {"": 42, "''": 123, "\"\"": 222}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_empty_string/document.json:
--------------------------------------------------------------------------------
1 | {"": 42, "''": 123, "\"\"": 222}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_on_object/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "0": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_escaped_single_quote/document.json:
--------------------------------------------------------------------------------
1 | {"'":"value"}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..[1].key
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_with_wildcard_on_one_matching/selector:
--------------------------------------------------------------------------------
1 | $[*].a
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent_after_dot_notation/selector:
--------------------------------------------------------------------------------
1 | $.store..price
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_empty_path/document.json:
--------------------------------------------------------------------------------
1 | {"key": 42, "": 9001, "''": "nice"}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_key_named_length/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "length": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent_on_scalar/document.json:
--------------------------------------------------------------------------------
1 | 42
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_and_operator/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>42 && @.key<44)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_or_operator/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>43 || @.key<43)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_dot_notation_with_number/selector:
--------------------------------------------------------------------------------
1 | $[?(@.2 == 'second')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_with_fraction/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==-0.123e2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_with_leading_zeros/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==010)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_array_without_match/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 42}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_array_without_match/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==43)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_in_NFC/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=="Motörhead")]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_with_path_and_path/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key1==@.key2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_set_wise_comparison_to_set/selector:
--------------------------------------------------------------------------------
1 | $.x[?(@[*]>=$.y[*])]
2 |
--------------------------------------------------------------------------------
/queries/script_expression/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/union_with_repeated_matches_after_dot_notation_with_wildcard/selector:
--------------------------------------------------------------------------------
1 | $.*[0,:5]
2 |
--------------------------------------------------------------------------------
/comparison/README.md:
--------------------------------------------------------------------------------
1 | The page has moved to https://cburgmer.github.io/json-path-comparison/.
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-PaesslerAG-jsonpath/SINGLE_POSSIBLE_MATCH_RETURNED_AS_SCALAR:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/implementations/Python_python-jsonpath/requirements.txt:
--------------------------------------------------------------------------------
1 | python-jsonpath==2.0.1
2 | pur==7.3.3
3 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonCons.JsonPath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/danielaparker/JsonCons.Net
2 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPath.Net/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/json-everything/json-everything
2 |
--------------------------------------------------------------------------------
/queries/array_slice_on_partially_overlapping_array/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_end_and_negative_step/selector:
--------------------------------------------------------------------------------
1 | $[2:-113667776004:-1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_end/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_0/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_1/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_negative_number_on_short_array/document.json:
--------------------------------------------------------------------------------
1 | ["one element"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_dot_wildcard/document.json:
--------------------------------------------------------------------------------
1 | {"key": 42, ".*": 1, "": 10}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_special_characters_combined/selector:
--------------------------------------------------------------------------------
1 | $[':@."$,*\'\\']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_wildcard_literal_on_object_without_key/selector:
--------------------------------------------------------------------------------
1 | $['*']
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_with_wildcard/document.json:
--------------------------------------------------------------------------------
1 | [{"a": 1},{"a": 1}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_with_wildcard_on_some_matching/selector:
--------------------------------------------------------------------------------
1 | $[*].a
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_union/document.json:
--------------------------------------------------------------------------------
1 | [{"key": "ey"}, {"key": "bee"}, {"key": "see"}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_array_value/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": ["first", "second"]
3 | }
4 |
--------------------------------------------------------------------------------
/queries/dot_notation_on_array_with_containing_object_matching_key/document.json:
--------------------------------------------------------------------------------
1 | [{"id": 2}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_number/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_space_padded_key/document.json:
--------------------------------------------------------------------------------
1 | {" a": 1, "a": 2, " a ": 3, "": 4}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent_on_null_value_array/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent_on_null_value_array/selector:
--------------------------------------------------------------------------------
1 | $..*
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_after_dot_notation_with_wildcard_after_recursive_descent/ALLOW_UNORDERED:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_with_number_on_object/selector:
--------------------------------------------------------------------------------
1 | $[?(@[1]=='b')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_different_grouped_operators/selector:
--------------------------------------------------------------------------------
1 | $[?(@.a && (@.b || @.c))]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_different_ungrouped_operators/selector:
--------------------------------------------------------------------------------
1 | $[?(@.a && @.b || @.c)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_dot_notation_with_dash/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key-dash == 'value')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_dot_notation_with_number_on_array/selector:
--------------------------------------------------------------------------------
1 | $[?(@.2 == 'third')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_empty_expression/document.json:
--------------------------------------------------------------------------------
1 | [1, {"key": 42}, "value", null]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_with_single_quotes/selector:
--------------------------------------------------------------------------------
1 | $[?(@.d==['v1','v2'])]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_for_dot_notation_with_star/selector:
--------------------------------------------------------------------------------
1 | $[?(@.*==2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_object_with_key_matching_query/selector:
--------------------------------------------------------------------------------
1 | $[?(@.id==2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_single_quotes/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=='value')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_with_root_reference/selector:
--------------------------------------------------------------------------------
1 | $.items[?(@.key==$.value)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_local_dot_key_and_null_in_data/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key='value')]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_set_wise_comparison_to_scalar/document.json:
--------------------------------------------------------------------------------
1 | [[1,2],[3,4],[5,6]]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-PaesslerAG-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/PaesslerAG/jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/oliveagle/jsonpath
2 |
--------------------------------------------------------------------------------
/queries/array_slice_on_exact_match/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_start_end_negative_step/selector:
--------------------------------------------------------------------------------
1 | $[113667776004:2:-1]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_end/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "first",
3 | "second"
4 | ]
5 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_end_on_object/document.json:
--------------------------------------------------------------------------------
1 | {":": 42, "more": "string"}
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_start_large_negative_number_and_open_end_on_short_array/selector:
--------------------------------------------------------------------------------
1 | $[-4:]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_empty/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_only/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_0/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_number_on_object/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "0": "value"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_special_characters_combined/document.json:
--------------------------------------------------------------------------------
1 | {":@.\"$,*'\\": 42}
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_string_and_unescaped_single_quote/selector:
--------------------------------------------------------------------------------
1 | $['single'quote']
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_two_literals_separated_by_dot_without_quotes/selector:
--------------------------------------------------------------------------------
1 | $[two.some]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_array_slice/document.json:
--------------------------------------------------------------------------------
1 | [[1, 2], ["a", "b"], [0, 0]]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_with_wildcard_on_one_matching/document.json:
--------------------------------------------------------------------------------
1 | [{"a": 1}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_number_-1/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_dot_notation_with_wildcard_on_nested_arrays/selector:
--------------------------------------------------------------------------------
1 | $.*.*
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_and_operator_and_value_false/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>0 && false)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_and_operator_and_value_true/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>0 && true)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_or_operator_and_value_false/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>0 || false)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_or_operator_and_value_true/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key>0 || true)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_with_-1/document.json:
--------------------------------------------------------------------------------
1 | [[2, 3], ["a"], [0, 2], [2]]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_with_number/document.json:
--------------------------------------------------------------------------------
1 | [["a", "b"], ["x", "y"]]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_for_array_slice_with_range_1/selector:
--------------------------------------------------------------------------------
1 | $[?(@[0:1]==[1])]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_for_dot_notation_with_star/selector:
--------------------------------------------------------------------------------
1 | $[?(@.*==[1,2])]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_boolean_expression_value/selector:
--------------------------------------------------------------------------------
1 | $[?((@.key<44)==false)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_for_array_slice_with_range_1/selector:
--------------------------------------------------------------------------------
1 | $[?(@[0:1]==1)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_for_bracket_notation_with_star/selector:
--------------------------------------------------------------------------------
1 | $[?(@[*]==2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_on_various_representations/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key==0)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_object_with_key_matching_query/document.json:
--------------------------------------------------------------------------------
1 | {"id": 2}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_dot_literal/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=="some.value")]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_parent_axis_operator/selector:
--------------------------------------------------------------------------------
1 | $[*].bookmarks[?(@.page == 45)]^^^
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_regular_expression_from_member/selector:
--------------------------------------------------------------------------------
1 | $[?(@.name=~/@.pattern/)]
2 |
--------------------------------------------------------------------------------
/queries/union_with_wildcard_and_number/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_end_and_range_of_0/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_end_and_range_of_1/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step_only/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_empty_string_doubled_quoted/document.json:
--------------------------------------------------------------------------------
1 | {"": 42, "''": 123, "\"\"": 222}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_array_slice/document.json:
--------------------------------------------------------------------------------
1 | [{"key": "ey"}, {"key": "bee"}, {"key": "see"}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_double_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "\"key\"": 42
4 | }
5 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_number_on_object/document.json:
--------------------------------------------------------------------------------
1 | {"a": "first", "2": "second", "b": "third"}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "'key'": 42
4 | }
5 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_and_current_object_literal/selector:
--------------------------------------------------------------------------------
1 | $[?(@['@key']==42)]
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-vmware-labs-yaml-jsonpath/LINK:
--------------------------------------------------------------------------------
1 | https://github.com/vmware-labs/yaml-jsonpath
2 |
--------------------------------------------------------------------------------
/implementations/Swift_Sextant/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.build
3 | /Packages
4 | /*.xcodeproj
5 | xcuserdata/
6 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_end/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_start/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_end_and_range_of_-1/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_string_and_unescaped_single_quote/document.json:
--------------------------------------------------------------------------------
1 | {"single'quote":"value"}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_with_wildcard_on_some_matching/document.json:
--------------------------------------------------------------------------------
1 | [{"a": 1},{"b": 1}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_dot_notation_after_dot_notation_with_wildcard/selector:
--------------------------------------------------------------------------------
1 | $.*.bar.*
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_after_dot_notation_with_wildcard_after_recursive_descent/selector:
--------------------------------------------------------------------------------
1 | $..*[?(@.id>2)]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_or_equals_true/selector:
--------------------------------------------------------------------------------
1 | $[?(@.d==["v1","v2"] || (@.d == true))]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_set_wise_comparison_to_set/document.json:
--------------------------------------------------------------------------------
1 | {"x":[[1,2],[3,4],[5,6]],"y":[3,4,5]}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_false/document.json:
--------------------------------------------------------------------------------
1 | [1, 3, "nice", true, null, false, {}, [], -1, 0, ""]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_null/document.json:
--------------------------------------------------------------------------------
1 | [1, 3, "nice", true, null, false, {}, [], -1, 0, ""]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_true/document.json:
--------------------------------------------------------------------------------
1 | [1, 3, "nice", true, null, false, {}, [], -1, 0, ""]
2 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/.gitignore:
--------------------------------------------------------------------------------
1 | # Files and directories created by pub
2 | .dart_tool/
3 | .packages
4 |
--------------------------------------------------------------------------------
/queries/array_slice_on_object/document.json:
--------------------------------------------------------------------------------
1 | {":": 42, "more": "string", "a": 1, "b": 2, "c": 3, "1:3": "nice"}
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_positive_end_and_range_of_-1/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_positive_end_and_range_of_0/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_start_and_positive_end_and_range_of_1/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_end_and_negative_step/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_end_and_step_empty/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "first",
3 | "second"
4 | ]
5 |
--------------------------------------------------------------------------------
/queries/array_slice_with_open_start_and_negative_step/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_positive_start_and_negative_end_and_range_of_-1/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_positive_start_and_negative_end_and_range_of_0/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_positive_start_and_negative_end_and_range_of_1/document.json:
--------------------------------------------------------------------------------
1 | [2, "a", 4, 5, 100, "nice"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_but_end_not_aligned/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_string_including_dot_wildcard/document.json:
--------------------------------------------------------------------------------
1 | {"nice": 42, "ni.*": 1, "mice": 100}
2 |
--------------------------------------------------------------------------------
/queries/dot_bracket_notation/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "other": {"key": [{"key": 42}]}
4 | }
5 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_current_object_literal/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=="hi@example.com")]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_unicode_character_escape/selector:
--------------------------------------------------------------------------------
1 | $[?(@.key=="Mot\u00f6rhead")]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_in_array_of_values/document.json:
--------------------------------------------------------------------------------
1 | [{"d": 1}, {"d": 2}, {"d": 1}, {"d": 3}, {"d": 4}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_not_equals_array_or_equals_true/selector:
--------------------------------------------------------------------------------
1 | $[?((@.d!=["v1","v2"]) || (@.d == true))]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_after_dot_notation_with_wildcard_on_array_of_objects/selector:
--------------------------------------------------------------------------------
1 | $.*[?(@.key)]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_on_object_without_key/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/array_slice_with_range_of_-1/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "first",
3 | "second",
4 | "third",
5 | "forth"
6 | ]
7 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_dot_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | ".": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_dot_notation_after_bracket_notation_with_wildcard/selector:
--------------------------------------------------------------------------------
1 | $[*].bar[*]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_null_value_array/document.json:
--------------------------------------------------------------------------------
1 | [
2 | 40,
3 | null,
4 | 42
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_filter_expression/document.json:
--------------------------------------------------------------------------------
1 | [{"id": 42, "name": "forty-two"}, {"id": 1, "name": "one"}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_dot_notation_after_dot_notation_with_wildcard/document.json:
--------------------------------------------------------------------------------
1 | [{"bar": [42]}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_with_number_on_object/document.json:
--------------------------------------------------------------------------------
1 | {"1": ["a", "b"], "2": ["x", "y"]}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_dot_notation_with_number/document.json:
--------------------------------------------------------------------------------
1 | [{"a": "first", "2": "second", "b": "third"}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_for_array_slice_with_range_1/document.json:
--------------------------------------------------------------------------------
1 | [[1, 2, 3], [1], [2, 3], 1, 2]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_boolean_expression_value/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 42}, {"key": 43}, {"key": 44}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_for_array_slice_with_range_1/document.json:
--------------------------------------------------------------------------------
1 | [[1, 2, 3], [1], [2, 3], 1, 2]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_length_function/document.json:
--------------------------------------------------------------------------------
1 | [
2 | [1,2,3,4,5],
3 | [1,2,3,4],
4 | [1,2,3]
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_length_property/document.json:
--------------------------------------------------------------------------------
1 | [
2 | [1,2,3,4,5],
3 | [1,2,3,4],
4 | [1,2,3]
5 | ]
6 |
--------------------------------------------------------------------------------
/implementations/PHP_galbar-jsonpath/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require": {
3 | "galbar/jsonpath": "*"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/implementations/PHP_remorhaz-jsonpath/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require": {
3 | "remorhaz/php-json-path": "*"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_end_and_negative_step/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_start_large_negative_number_and_open_end_on_short_array/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_after_dot_notation_with_wildcard_on_nested_arrays_with_different_length/selector:
--------------------------------------------------------------------------------
1 | $.*[1]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_root_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "$": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_union_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | ",": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_wildcard_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "*": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_wildcard_literal_on_object_without_key/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "another": "entry"
3 | }
4 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_dot_notation_after_bracket_notation_with_wildcard/document.json:
--------------------------------------------------------------------------------
1 | [{"bar": [42]}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes_and_dot/document.json:
--------------------------------------------------------------------------------
1 | {"some.key": 42, "some": {"key": "value"}, "'some.key'": 43}
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_dot_notation_with_wildcard_on_nested_arrays/document.json:
--------------------------------------------------------------------------------
1 | [[1, 2, 3], [4, 5, 6]]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_addition/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 60}, {"key": 50}, {"key": 10}, {"key": -50}, {"key+50": 100}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_division/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 60}, {"key": 50}, {"key": 10}, {"key": -50}, {"key/10": 5}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_dot_notation_with_dash/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "key-dash": "value"
4 | }
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_length_free_function/document.json:
--------------------------------------------------------------------------------
1 | [
2 | [1,2,3,4,5],
3 | [1,2,3,4],
4 | [1,2,3]
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_equals_array_or_equals_true/selector:
--------------------------------------------------------------------------------
1 | $[?(!(@.d==["v1","v2"]) || (@.d == true))]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_tautological_comparison/document.json:
--------------------------------------------------------------------------------
1 | [1, 3, "nice", true, null, false, {}, [], -1, 0, ""]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_array_slice/document.json:
--------------------------------------------------------------------------------
1 | [{"c":"cc1","d":"dd1","e":"ee1"},{"c":"cc2","d":"dd2","e":"ee2"}]
2 |
--------------------------------------------------------------------------------
/implementations/Erlang_ejsonpath/rebar.config:
--------------------------------------------------------------------------------
1 | {erl_opts, [debug_info]}.
2 | {deps, [jiffy, ejsonpath]}.
3 | {base_dir, "build"}.
4 |
--------------------------------------------------------------------------------
/queries/array_slice_with_large_number_for_start_end_negative_step/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step_and_start_greater_than_end/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_array_slice_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | ":": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_double_quote_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "\"": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/dot_bracket_notation_with_double_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "other": {"key": [{"key": 42}]}
4 | }
5 |
--------------------------------------------------------------------------------
/queries/dot_bracket_notation_without_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "other": {"key": [{"key": 42}]}
4 | }
5 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_dot_notation_with_number_on_array/document.json:
--------------------------------------------------------------------------------
1 | [["first", "second", "third", "forth", "fifth"]]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_for_dot_notation_with_star/document.json:
--------------------------------------------------------------------------------
1 | [[1,2], [2,3], [1], [2], [1, 2, 3], 1, 2, 3]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_multiplication/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 60}, {"key": 50}, {"key": 10}, {"key": -50}, {"key*2": 100}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subtraction/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 60}, {"key": 50}, {"key": 10}, {"key": -50}, {"key-50": -100}]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_bracket_notation/document.json:
--------------------------------------------------------------------------------
1 | [{"c":"cc1","d":"dd1","e":"ee1"},{"c":"cc2","d":"dd2","e":"ee2"}]
2 |
--------------------------------------------------------------------------------
/implementations/PHP_softcreatr-jsonpath/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require": {
3 | "softcreatr/jsonpath": "*"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/queries/array_slice_with_negative_step_on_partially_overlapping_array/document.json:
--------------------------------------------------------------------------------
1 | ["first", "second", "third", "forth", "fifth"]
2 |
--------------------------------------------------------------------------------
/queries/array_slice_with_step_and_leading_zeros/document.json:
--------------------------------------------------------------------------------
1 | [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]
2 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_quoted_current_object_literal/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "@": "value",
3 | "another": "entry"
4 | }
5 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_or_operator/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 42},
3 | {"key": 43},
4 | {"key": 44}
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_for_bracket_notation_with_star/document.json:
--------------------------------------------------------------------------------
1 | [[1,2], [2,3], [1], [2], [1, 2, 3], 1, 2, 3]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_for_dot_notation_with_star/document.json:
--------------------------------------------------------------------------------
1 | [[1,2], [2,3], [1], [2], [1, 2, 3], 1, 2, 3]
2 |
--------------------------------------------------------------------------------
/queries/recursive_descent_after_dot_notation/document.json:
--------------------------------------------------------------------------------
1 | {"some key": "value", "key": {"complex": "string", "primitives": [0, 1]}}
2 |
--------------------------------------------------------------------------------
/src/wrap_in_docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | echo "Please use ./src/with_docker.sh instead"
5 | exit 1
6 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_number_after_dot_notation_with_wildcard_on_nested_arrays_with_different_length/document.json:
--------------------------------------------------------------------------------
1 | [[1], [2,3]]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent_on_null_value_array/document.json:
--------------------------------------------------------------------------------
1 | [
2 | 40,
3 | null,
4 | 42
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_and_operator/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 42},
3 | {"key": 43},
4 | {"key": 44}
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_single_quotes/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": "some"},
3 | {"key": "value"}
4 | ]
5 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_with_root_reference/document.json:
--------------------------------------------------------------------------------
1 | {"value": 42, "items": [{"key": 10}, {"key": 42}, {"key": 50}]}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_in_current_object/document.json:
--------------------------------------------------------------------------------
1 | [{"d": [1, 2, 3]}, {"d": [2]}, {"d": [1]}, {"d": [3, 4]}, {"d": [4, 2]}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subpaths_deeply_nested/document.json:
--------------------------------------------------------------------------------
1 | [{"a": {"b": {"c": 3}}}, {"a": 3}, {"c": 3}, {"a": {"b": {"c": 2}}}]
2 |
--------------------------------------------------------------------------------
/queries/union_with_filter/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 1}, {"key": 8}, {"key": 3}, {"key": 10}, {"key": 7}, {"key": 2}, {"key": 6}, {"key": 4}]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_dot_notation_with_wildcard/document.json:
--------------------------------------------------------------------------------
1 | [{"c":"cc1","d":"dd1","e":"ee1"},{"c":"cc2","d":"dd2","e":"ee2"}]
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-ohler55-ojg/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.22
4 |
5 | require github.com/ohler55/ojg v1.27.0
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-spyzhov-ajson/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.13
4 |
5 | require github.com/spyzhov/ajson v0.9.6
6 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | cargo update
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_on_various_representations/document.json:
--------------------------------------------------------------------------------
1 | [{"key": 0}, {"key": 0.0}, {"key": -0.0}, {"key": 0.0E1}]
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-theory-jsonpath/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.23
4 |
5 | require github.com/theory/jsonpath v0.10.2
6 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_lib/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | cargo update
6 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_plus/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | cargo update
6 |
--------------------------------------------------------------------------------
/implementations/Rust_serde_json_path/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | cargo update
6 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_spaces/document.json:
--------------------------------------------------------------------------------
1 | {" a": 1, "a": 2, " a ": 3, "a ": 4, " 'a' ": 5, " 'a": 6, "a' ": 7, " \"a\" ": 8, "\"a\"": 9}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {"id": 2, "more": [{"id": 2}, {"more": {"id": 2}}, {"id": {"id": 2}}, [{"id": 2}]]}
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_with_leading_zeros/document.json:
--------------------------------------------------------------------------------
1 | [{"key": "010"}, {"key": "10"}, {"key": 10}, {"key": 0}, {"key": 8}]
2 |
--------------------------------------------------------------------------------
/implementations/Elixir_jaxon/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mix deps.update --all
6 |
--------------------------------------------------------------------------------
/implementations/Elixir_warpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mix deps.update --all
6 |
--------------------------------------------------------------------------------
/implementations/Swift_Sextant/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | swift package update
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_array_or_equals_true/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"d": ["v1", "v2"] },
3 | {"d": ["a", "b"] },
4 | {"d" : true}
5 | ]
6 |
--------------------------------------------------------------------------------
/implementations/Elixir_ExJsonPath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mix deps.update --all
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-ohler55-ojg/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-spyzhov-ajson/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-theory-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPath.Net/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | dotnet add package JsonPath.Net
6 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_array/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "string",
3 | 42,
4 | {
5 | "key": "value"
6 | },
7 | [0, 1]
8 | ]
9 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_not_equals_array_or_equals_true/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"d": ["v1", "v2"] },
3 | {"d": ["a", "b"] },
4 | {"d" : true}
5 | ]
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {"id": 2, "more": [{"id": 2}, {"more": {"id": 2}}, {"id": {"id": 2}}, [{"id": 2}]]}
2 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-PaesslerAG-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_array/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "string",
3 | 42,
4 | {
5 | "key": "value"
6 | },
7 | [0, 1]
8 | ]
9 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_dot_literal/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": "some"},
3 | {"key": "value"},
4 | {"key": "some.value"}
5 | ]
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-vmware-labs-yaml-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | go get -u
6 |
--------------------------------------------------------------------------------
/implementations/PHP_galbar-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | rm -rf vendor
6 | composer update
7 |
--------------------------------------------------------------------------------
/implementations/dotNET_Json.NET/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | dotnet add package Newtonsoft.Json
6 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonCons.JsonPath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | dotnet add package JsonCons.JsonPath
6 |
--------------------------------------------------------------------------------
/implementations/dotNET_Manatee.Json/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | dotnet add package Manatee.Json
6 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_dot/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "one": {"key": "value"},
3 | "two": {"some": "more", "key": "other value"},
4 | "two.some": "42"
5 | }
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_number_with_fraction/document.json:
--------------------------------------------------------------------------------
1 | [{"key": -12.3}, {"key": -0.123}, {"key": -12}, {"key": 12.3}, {"key": 2}, {"key": "-0.123e2"}]
2 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_equals_array_or_equals_true/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"d": ["v1", "v2"] },
3 | {"d": ["a", "b"] },
4 | {"d" : true}
5 | ]
6 |
--------------------------------------------------------------------------------
/implementations/PHP_remorhaz-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | rm -rf vendor
6 | composer update
7 |
--------------------------------------------------------------------------------
/implementations/PHP_softcreatr-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | rm -rf vendor
6 | composer update
7 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_current_object_literal/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": "some"},
3 | {"key": "value"},
4 | {"key": "hi@example.com"}
5 | ]
6 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.13
4 |
5 | require github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852
6 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_union_with_keys/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "one": {"key": "value"},
3 | "two": {"k": "v"},
4 | "three": {"some": "more", "key": "other value"}
5 | }
6 |
--------------------------------------------------------------------------------
/queries/root/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "another key": {
4 | "complex": [
5 | "a",
6 | 1
7 | ]
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | ./build/cpanm --info JSON::Path > version
6 | rm -rf build
7 |
--------------------------------------------------------------------------------
/implementations/dotNET_Json.NET/run.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4 |
5 | "$script_dir"/build/Dotnet_Json.NET "$@"
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_from_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | [{"key": [{"child": 1}, {"child": 2}]}, {"key": [{"child": 2}]}, {"key": [{}]}, {"key": [{"something": 42}]}, {}]
2 |
--------------------------------------------------------------------------------
/queries/union_with_keys_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | [{"c":"cc1","d":"dd1","e":"ee1"}, {"c": "cc2", "child": {"d": "dd2"}}, {"c": "cc3"}, {"d": "dd4"}, {"child": {"c": "cc5"}}]
2 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_on_object/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "some": "string",
3 | "int": 42,
4 | "object": {
5 | "key": "value"
6 | },
7 | "array": [0, 1]
8 | }
9 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_local_dot_key_and_null_in_data/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": "value"},
4 | null,
5 | {"key": 42},
6 | {"some": "value"}
7 | ]
8 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subpaths/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "a": {
4 | "b": 3
5 | }
6 | },
7 | {
8 | "a": {
9 | "b": 2
10 | }
11 | }
12 | ]
13 |
--------------------------------------------------------------------------------
/implementations/Cpp_jsoncons/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | ./build/main "$@"
8 |
--------------------------------------------------------------------------------
/implementations/PHP_Goessner/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | php main.php "$@"
8 |
--------------------------------------------------------------------------------
/implementations/dotNET_Manatee.Json/run.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4 |
5 | "$script_dir"/build/Dotnet_Manatee.Json "$@"
6 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_on_object/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "some": "string",
3 | "int": 42,
4 | "object": {
5 | "key": "value"
6 | },
7 | "array": [0, 1]
8 | }
9 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_value_after_dot_notation_with_wildcard_on_array_of_objects/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "some": "some value"
4 | },
5 | {
6 | "key": "value"
7 | }
8 | ]
9 |
--------------------------------------------------------------------------------
/implementations/Clojure_json-path/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | ./lein ancient upgrade
6 | rm -f ./.lein-failures
7 | rm -rf ./target/
8 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: Dart_json_path
2 | description: Dart json_path adapter
3 |
4 | environment:
5 | sdk: '>=3.0.0 <4.0.0'
6 |
7 | dependencies:
8 | json_path: ^0.7.0
9 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | dart pub upgrade --major-versions
6 | dart pub upgrade
7 | rm -rf build/
8 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.13
4 |
5 | require (
6 | github.com/bhmj/jsonslice v1.1.3
7 | github.com/bhmj/xpression v0.9.4 // indirect
8 | )
9 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-ohler55-ojg/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-spyzhov-ajson/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | ./index.js "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Java_com.github.jsurfer/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mvn versions:use-latest-versions
6 | rm -f pom.xml.versionsBackup
7 |
--------------------------------------------------------------------------------
/implementations/Java_com.jayway.jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mvn versions:use-latest-versions
6 | rm -f pom.xml.versionsBackup
7 |
--------------------------------------------------------------------------------
/implementations/Kotlin_com.nfeld.jsonpathkt/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mvn versions:use-latest-versions
6 | rm -f pom.xml.versionsBackup
7 |
--------------------------------------------------------------------------------
/implementations/Swift_Sextant/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | ./build/Swift_Sextant "$@"
8 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPath.Net/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4 |
5 | cd "$script_dir"
6 | timeout -v 5 build/Dotnet_JsonPath.Net "$@"
7 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_two_literals_separated_by_dot_without_quotes/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "one": {"key": "value"},
3 | "two": {"some": "more", "key": "other value"},
4 | "two.some": "42"
5 | }
6 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_wildcard_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "another key": {
4 | "complex": "string",
5 | "primitives": [0, 1]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_wildcard_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": "value",
3 | "another key": {
4 | "complex": "string",
5 | "primitives": [0, 1]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation_and_current_object_literal/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"@key": 0},
3 | {"@key": 42},
4 | {"key": 42},
5 | {"@key": 43},
6 | {"some": "value"}
7 | ]
8 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-PaesslerAG-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-theory-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Java_com.github.xmljacquard.ajp/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | mvn versions:use-latest-versions
6 | rm -f pom.xml.versionsBackup
7 |
--------------------------------------------------------------------------------
/implementations/PHP_galbar-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | php main.php "$@"
9 |
--------------------------------------------------------------------------------
/implementations/PHP_remorhaz-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | php main.php "$@"
9 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_current_object/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "some value",
3 | null,
4 | "value",
5 | 0,
6 | 1,
7 | -1,
8 | "",
9 | [],
10 | {},
11 | false,
12 | true
13 | ]
14 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_array_of_numbers/document.json:
--------------------------------------------------------------------------------
1 | [
2 | 0,
3 | 42,
4 | -1,
5 | 41,
6 | 43,
7 | 42.0001,
8 | 41.9999,
9 | null,
10 | 100
11 | ]
12 |
--------------------------------------------------------------------------------
/implementations/JavaScript_json-p3/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | npm i json-p3@latest
9 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | npm i jsonpath@latest
9 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonCons.JsonPath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4 |
5 | cd "$script_dir"
6 | timeout -v 5 build/Dotnet_JsonCons.JsonPath "$@"
7 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_dash/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "key": 42,
3 | "key-": 43,
4 | "-": 44,
5 | "dash": 45,
6 | "-dash": 46,
7 | "": 47,
8 | "key-dash": "value",
9 | "something": "else"
10 | }
11 |
--------------------------------------------------------------------------------
/implementations/Clojure_json-path/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | java -jar "$script_dir"/build/json-path-comparison.jar "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | dart run bin/Dart_json_path.dart "$1"
8 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-vmware-labs-yaml-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | "$script_dir"/build/main "$@"
7 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpathly/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | npm i jsonpathly@latest
9 |
--------------------------------------------------------------------------------
/implementations/Raku_JSON-Path/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | rakudo -Iinst#./build/deps main.p6 "$@"
8 |
--------------------------------------------------------------------------------
/queries/bracket_notation_with_two_literals_separated_by_dot/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "one": {"key": "value"},
3 | "two": {"some": "more", "key": "other value"},
4 | "two.some": "42",
5 | "two'.'some": "43"
6 | }
7 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath-plus/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | npm i jsonpath-plus@latest
9 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_regular_expression/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"name": "hullo world"},
3 | {"name": "hello world"},
4 | {"name": "yes hello world"},
5 | {"name": "HELLO WORLD"},
6 | {"name": "good bye"}
7 | ]
8 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | readonly runner="${script_dir}/build/rust_jsonpath"
6 |
7 | "$runner" "$@"
8 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_lib/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | readonly runner="${script_dir}/build/rust_jsonpath_lib"
6 |
7 | "$runner" "$@"
8 |
--------------------------------------------------------------------------------
/queries/union_with_repeated_matches_after_dot_notation_with_wildcard/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "a": [
3 | "string",
4 | null,
5 | true
6 | ],
7 | "b": [
8 | false,
9 | "string",
10 | 5.4
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/src/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"/..
7 |
8 | find ./implementations -name "upgrade.sh" | xargs -n1 -I% sh -c '%'
9 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_plus/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | readonly runner="${script_dir}/build/rust_jsonpath_plus"
6 |
7 | "$runner" "$@"
8 |
--------------------------------------------------------------------------------
/implementations/Rust_serde_json_path/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | readonly runner="${script_dir}/build/rust_serde_json_path"
6 |
7 | "$runner" "$@"
8 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPathLib/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | dotnet add package --prerelease JsonPathLib
6 | dotnet add package Newtonsoft.Json
7 | dotnet add package Jint
8 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-ng/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" ./build/deps/local/bin/pur -r requirements.txt
6 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-rw/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" ./build/deps/local/bin/pur -r requirements.txt
6 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" ./build/deps/local/bin/pur -r requirements.txt
6 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath2/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" ./build/deps/local/bin/pur -r requirements.txt
6 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 |
5 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6 |
7 | cd "$script_dir"
8 |
9 | timeout -v 5 perl -I ./build/lib/perl5/ main.pl "$@"
10 |
--------------------------------------------------------------------------------
/implementations/Python_python-jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" ./build/deps/local/bin/pur -r requirements.txt
6 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPathLib/nuget.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | curl 'https://rubygems.org/api/v1/versions/jsonpath.yaml' | grep number | head -1 | sed 's/.*number: //' > version
6 | rm -rf build
7 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_bracket_notation_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "k": [{"key": "some value"}, {"key": 42}],
3 | "kk": [[{"key": 100}, {"key": 200}, {"key": 300}], [{"key": 400}, {"key": 500}, {"key": 600}]],
4 | "key": [0, 1]
5 | }
6 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_in_NFC/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": "something"},
3 | {"key": "Mot\u00f6rhead"},
4 | {"key": "mot\u00f6rhead"},
5 | {"key": "Motorhead"},
6 | {"key": "Motoo\u0308rhead"},
7 | {"key": "motoo\u0308rhead"}
8 | ]
9 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "rust_jsonpath"
3 | version = "0.1.0"
4 | authors = ["Christoph Burgmer "]
5 | edition = "2018"
6 |
7 | [dependencies]
8 | serde_json = "1.0.39"
9 | jsonpath = "*"
10 |
--------------------------------------------------------------------------------
/implementations/Scala_jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | java -cp "${script_dir}/build/json-path-comparison.jar:$(cat "${script_dir}/build/cp.txt")" query.App "$@"
7 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_regular_expression_from_member/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"name": "hullo world"},
3 | {"name": "hello world"},
4 | {"name": "yes hello world"},
5 | {"name": "HELLO WORLD"},
6 | {"name": "good bye"},
7 | {"pattern": "hello.*"}
8 | ]
9 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | version="$(cat "${script_dir}/version")"
7 |
8 | gem install -i "$script_dir"/gems jsonpath -v "$version"
9 |
--------------------------------------------------------------------------------
/implementations/Java_com.github.jsurfer/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | java -cp "${script_dir}/build/json-path-comparison.jar:$(cat "${script_dir}/build/cp.txt")" query.App "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Java_com.jayway.jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | java -cp "${script_dir}/build/json-path-comparison.jar:$(cat "${script_dir}/build/cp.txt")" query.App "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_lib/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "rust_jsonpath_lib"
3 | version = "0.1.0"
4 | authors = ["Christoph Burgmer "]
5 | edition = "2018"
6 |
7 | [dependencies]
8 | serde_json = "1.0.39"
9 | jsonpath_lib = "*"
10 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-PaesslerAG-jsonpath/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.13
4 |
5 | require (
6 | github.com/PaesslerAG/gval v1.2.4 // indirect
7 | github.com/PaesslerAG/jsonpath v0.1.1
8 | github.com/shopspring/decimal v1.4.0 // indirect
9 | )
10 |
--------------------------------------------------------------------------------
/implementations/Kotlin_com.nfeld.jsonpathkt/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | java -cp "${script_dir}/build/json-path-comparison.jar:$(cat "${script_dir}/build/cp.txt")" query.AppKt "$@"
7 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-ng/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" python3 main.py "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-rw/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" python3 main.py "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" python3 main.py "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath2/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" python3 main.py "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_plus/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "rust_jsonpath_plus"
3 | version = "0.1.0"
4 | authors = ["Christoph Burgmer "]
5 | edition = "2018"
6 |
7 | [dependencies]
8 | serde_json = "1.0.39"
9 | jsonpath-plus = "*"
10 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "object": {
3 | "key": "value",
4 | "array": [
5 | {"key": "something"},
6 | {"key": {"key": "russian dolls"}}
7 | ]
8 | },
9 | "key": "top"
10 | }
11 |
--------------------------------------------------------------------------------
/implementations/Haskell_jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | # Timeout after some seconds to avoid endless loops
8 | timeout -v 10 ./build/json-path-comparison "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Python_python-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | PYTHONPATH="$( cd build/deps/local/lib/python*/dist-packages/ && pwd )" python3 main.py "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Rust_serde_json_path/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "rust_serde_json_path"
3 | version = "0.1.0"
4 | authors = ["Christoph Burgmer "]
5 | edition = "2018"
6 |
7 | [dependencies]
8 | serde_json = "1.0.39"
9 | serde_json_path = "*"
10 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_bracket_notation/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"some": "value"}
11 | ]
12 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string_with_unicode_character_escape/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": "something"},
3 | {"key": "Mot\u00f6rhead"},
4 | {"key": "mot\u00f6rhead"},
5 | {"key": "Motorhead"},
6 | {"key": "Motoo\u0308rhead"},
7 | {"key": "motoo\u0308rhead"}
8 | ]
9 |
--------------------------------------------------------------------------------
/implementations/Bash_JSONPath.sh/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | curl 'https://api.github.com/repos/bashtools/JSONPath.sh/releases' | grep '"tag_name":' | head -1 | sed 's/.*"tag_name": "\(.*\)",.*/\1/' > tag
6 | rm -rf build
7 |
--------------------------------------------------------------------------------
/implementations/C_json-glib/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 | # Timeout after some seconds as slices with step seem to go into an endless loop
8 | timeout -v 5 build/main "$@"
9 |
--------------------------------------------------------------------------------
/implementations/Cpp_jsoncons/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | curl 'https://api.github.com/repos/danielaparker/jsoncons/releases' | grep '"tag_name":' | head -1 | sed 's/.*"tag_name": "\(.*\)",.*/\1/' > tag
6 | rm -rf build
7 |
--------------------------------------------------------------------------------
/implementations/JavaScript_brunerd/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | curl 'https://api.github.com/repos/brunerd/jsonpath/releases' | grep '"tag_name":' | head -1 | sed 's/.*"tag_name": "\(.*\)",.*/\1/' > tag
6 | rm -rf build
7 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly output_dir="$1"
5 | script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6 | version="$(cat "${script_dir}/version")"
7 |
8 | "$script_dir"/cpanm.sh --pureperl -nL "$output_dir" "$version"
9 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/go.sum:
--------------------------------------------------------------------------------
1 | github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 h1:Yl0tPBa8QPjGmesFh1D0rDy+q1Twx6FyU7VWHi8wZbI=
2 | github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852/go.mod h1:eqOVx5Vwu4gd2mmMZvVZsgIqNSaW3xxRThUJ0k/TPk4=
3 |
--------------------------------------------------------------------------------
/implementations/Haskell_jsonpath/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly target_dir="$1"
5 |
6 | cd "$(dirname "$target_dir")"
7 |
8 | cabal v2-update
9 | cabal v2-install --install-method=copy --installdir="$(basename "$target_dir")" --overwrite-policy=always
10 |
--------------------------------------------------------------------------------
/implementations/PHP_Goessner/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/PHP_Goessner
2 | builddir = $root/build
3 |
4 | rule install
5 | command = $root/install.sh $out
6 |
7 | build $builddir/jsonpath.php: install | $root/install.sh
8 |
9 | build $root/install: phony $builddir/jsonpath.php
10 |
--------------------------------------------------------------------------------
/queries/dot_notation_after_recursive_descent_with_extra_dot/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "object": {
3 | "key": "value",
4 | "array": [
5 | {"key": "something"},
6 | {"key": {"key": "russian dolls"}}
7 | ]
8 | },
9 | "key": "top"
10 | }
11 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPathLib/run.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4 |
5 | cd "$script_dir"
6 |
7 | # Timeout after some seconds as slices with 0 step seem to go into an infinite loop
8 | timeout -v 10 build/Dotnet_JsonPathLib "$@"
9 |
--------------------------------------------------------------------------------
/src/oneliner_json.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import sys
3 | import json
4 | from collections import OrderedDict
5 |
6 | def main():
7 | j = json.loads(sys.stdin.read(), object_pairs_hook=OrderedDict)
8 | print(json.dumps(j))
9 |
10 | if __name__ == '__main__':
11 | sys.exit(main())
12 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/lib/Dart_json_path.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:json_path/json_path.dart';
4 |
5 | String select(String selector, String payload) {
6 | final json = jsonDecode(payload);
7 |
8 | return jsonEncode(JsonPath(selector).readValues(json).toList());
9 | }
10 |
--------------------------------------------------------------------------------
/implementations/Objective-C_SMJJSONPath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | cd "$(dirname "$BASH_SOURCE[0]")"
5 | curl 'https://codeberg.org/api/v1/repos/javerous/SMJJSONPath/releases/latest' | grep '"tag_name":' | head -1 | sed 's/.*"tag_name": *"\([^"]*\)",.*/\1/' > tag
6 | rm -rf build
7 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_and_operator_and_value_false/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 1},
3 | {"key": 3},
4 | {"key": "nice"},
5 | {"key": true},
6 | {"key": null},
7 | {"key": false},
8 | {"key": {}},
9 | {"key": []},
10 | {"key": -1},
11 | {"key": 0},
12 | {"key": ""}
13 | ]
14 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_and_operator_and_value_true/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 1},
3 | {"key": 3},
4 | {"key": "nice"},
5 | {"key": true},
6 | {"key": null},
7 | {"key": false},
8 | {"key": {}},
9 | {"key": []},
10 | {"key": -1},
11 | {"key": 0},
12 | {"key": ""}
13 | ]
14 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_or_operator_and_value_false/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 1},
3 | {"key": 3},
4 | {"key": "nice"},
5 | {"key": true},
6 | {"key": null},
7 | {"key": false},
8 | {"key": {}},
9 | {"key": []},
10 | {"key": -1},
11 | {"key": 0},
12 | {"key": ""}
13 | ]
14 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_boolean_or_operator_and_value_true/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 1},
3 | {"key": 3},
4 | {"key": "nice"},
5 | {"key": true},
6 | {"key": null},
7 | {"key": false},
8 | {"key": {}},
9 | {"key": []},
10 | {"key": -1},
11 | {"key": 0},
12 | {"key": ""}
13 | ]
14 |
--------------------------------------------------------------------------------
/src/pretty_json.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import sys
3 | import json
4 | from collections import OrderedDict
5 |
6 | def main():
7 | j = json.loads(sys.stdin.read(), object_pairs_hook=OrderedDict)
8 | print(json.dumps(j, indent=2))
9 |
10 | if __name__ == '__main__':
11 | sys.exit(main())
12 |
--------------------------------------------------------------------------------
/implementations/JavaScript_Goessner/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/JavaScript_Goessner
2 | builddir = $root/build
3 |
4 | rule install
5 | command = $root/install.sh $out
6 |
7 | build $builddir/jsonpath_export.js: install | $root/install.sh
8 |
9 | build $root/install: phony $builddir/jsonpath_export.js
10 |
--------------------------------------------------------------------------------
/implementations/JavaScript_brunerd/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/JavaScript_brunerd
2 | builddir = $root/build
3 |
4 | rule install
5 | command = $root/install.sh $out
6 |
7 | build $builddir/jsonpath_export.js: install | $root/install.sh
8 |
9 | build $root/install: phony $builddir/jsonpath_export.js
10 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_subfilter/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "a": [{"price": 1}, {"price": 3}]
4 | },
5 | {
6 | "a": [{"price": 11}]
7 | },
8 | {
9 | "a": [{"price": 8}, {"price": 12}, {"price": 3}]
10 | },
11 | {
12 | "a": []
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/implementations/Bash_JSONPath.sh/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Bash_JSONPath.sh
2 | builddir = $root/build
3 |
4 | rule install
5 | command = rm -rf $out && $root/install.sh $out
6 |
7 | build $builddir/JSONPath.sh: install | $root/install.sh $root/tag
8 |
9 | build $root/install: phony $builddir/JSONPath.sh
10 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_on_object/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "a": {"key": 0},
3 | "b": {"key": 42},
4 | "c": {"key": -1},
5 | "d": {"key": 41},
6 | "e": {"key": 43},
7 | "f": {"key": 42.0001},
8 | "g": {"key": 41.9999},
9 | "h": {"key": 100},
10 | "i": {"some": "value"}
11 | }
12 |
--------------------------------------------------------------------------------
/implementations/PHP_softcreatr-jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"
7 |
8 | # Timeout after some seconds as some slices with negative step seem to go into an infinite loop
9 | timeout -v 10 php main.php "$@"
10 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Perl_JSON-Path
2 | builddir = $root/build
3 |
4 | rule install_json_path
5 | command = $root/install.sh $builddir && echo > $out
6 |
7 | build $builddir/json_path_installed: install_json_path
8 |
9 | build $root/install: phony $builddir/json_path_installed
10 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Ruby_jsonpath
2 | builddir = $root/build
3 |
4 | rule install_gems
5 | command = $root/install.sh && echo > $out
6 |
7 | build $builddir/gems_installed: install_gems | $root/install.sh $root/version
8 |
9 | build $root/install: phony $builddir/gems_installed
10 |
--------------------------------------------------------------------------------
/implementations/Erlang_ejsonpath/src/jsonpath.app.src:
--------------------------------------------------------------------------------
1 | {application, jsonpath,
2 | [{description, "An OTP library"},
3 | {vsn, "0.1.0"},
4 | {registered, []},
5 | {applications,
6 | [kernel,
7 | stdlib
8 | ]},
9 | {env,[]},
10 | {modules, []},
11 |
12 | {licenses, ["Apache 2.0"]},
13 | {links, []}
14 | ]}.
15 |
--------------------------------------------------------------------------------
/implementations/Erlang_ejsonpath/upgrade.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "${script_dir}"
7 |
8 | rebar3 upgrade
9 | # Poor man's dependency handling, work around https://github.com/erlang/rebar3/issues/2220
10 | rm -r ./build/
11 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_non_singular_existence_test/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"a": 0},
3 | {"a": "x"},
4 | {"a": false},
5 | {"a": true},
6 | {"a": null},
7 | {"a": []},
8 | {"a": [1]},
9 | {"a": [1, 2]},
10 | {"a": {}},
11 | {"a": {"x": "y"}},
12 | {"a": {"x": "y", "w": "z"}}
13 | ]
14 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_single_quotes_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "object": {
3 | "key": "value",
4 | "'key'": 100,
5 | "array": [
6 | {"key": "something", "'key'": 0},
7 | {"key": {"key": "russian dolls"}, "'key'": {"'key'": 99}}
8 | ]
9 | },
10 | "key": "top",
11 | "'key'": 42
12 | }
13 |
--------------------------------------------------------------------------------
/src/canonical_json.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import sys
3 | import json
4 |
5 | def main():
6 | try:
7 | j = json.loads(sys.stdin.read())
8 | except Exception as e:
9 | print(e)
10 | sys.exit(1)
11 |
12 | print(json.dumps(j, sort_keys=True))
13 |
14 | if __name__ == '__main__':
15 | sys.exit(main())
16 |
--------------------------------------------------------------------------------
/implementations/dotNET_Json.NET/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/dotNET_Json.NET
2 | builddir = $root/build
3 |
4 | rule build
5 | command = $root/install.sh $$(basename $$(dirname $out))
6 |
7 | build $builddir/Dotnet_Json.NET: build | $root/Dotnet_Json.NET.csproj $root/Program.cs
8 |
9 | build $root/install: phony $builddir/Dotnet_Json.NET
10 |
--------------------------------------------------------------------------------
/queries/dot_notation_with_double_quotes_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | {
2 | "object": {
3 | "key": "value",
4 | "\"key\"": 100,
5 | "array": [
6 | {"key": "something", "\"key\"": 0},
7 | {"key": {"key": "russian dolls"}, "\"key\"": {"\"key\"": 99}}
8 | ]
9 | },
10 | "key": "top",
11 | "\"key\"": 42
12 | }
13 |
--------------------------------------------------------------------------------
/implementations/Dart_json_path/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Dart_json_path
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && PUB_CACHE=build/pub-cache dart pub get) > $out
6 |
7 | build $builddir/deps_installed: install | $root/pubspec.yaml $root/pubspec.lock
8 |
9 | build $root/install: phony $builddir/deps_installed
10 |
--------------------------------------------------------------------------------
/implementations/Haskell_jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Haskell_jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = $root/install.sh $$(dirname $out)
6 |
7 | build $builddir/json-path-comparison: install | $root/json-path-comparison.cabal $root/app/Main.hs
8 |
9 | build $root/install: phony $builddir/json-path-comparison
10 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Python_jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = pip3 install -r $root/requirements.txt --prefix $builddir/deps && echo > $out
6 |
7 | build $builddir/pip_installed: install | $root/requirements.txt
8 |
9 | build $root/install: phony $builddir/pip_installed
10 |
--------------------------------------------------------------------------------
/implementations/Erlang_ejsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Erlang_ejsonpath
2 | builddir = $root/build
3 |
4 | rule compile
5 | command = (cd $root && rebar3 compile)
6 |
7 | build $builddir/default/lib/jsonpath/ebin/jsonpath.beam: compile | $root/src/jsonpath.erl
8 |
9 | build $root/install: phony $builddir/default/lib/jsonpath/ebin/jsonpath.beam
10 |
--------------------------------------------------------------------------------
/implementations/PHP_galbar-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/PHP_galbar-jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && composer install) && echo > $out
6 |
7 | build $builddir/composer_installed: install | $root/composer.json $root/composer.lock
8 |
9 | build $root/install: phony $builddir/composer_installed
10 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-ng/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Python_jsonpath-ng
2 | builddir = $root/build
3 |
4 | rule install
5 | command = pip3 install -r $root/requirements.txt --prefix $builddir/deps && echo > $out
6 |
7 | build $builddir/pip_installed: install | $root/requirements.txt
8 |
9 | build $root/install: phony $builddir/pip_installed
10 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath-rw/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Python_jsonpath-rw
2 | builddir = $root/build
3 |
4 | rule install
5 | command = pip3 install -r $root/requirements.txt --prefix $builddir/deps && echo > $out
6 |
7 | build $builddir/pip_installed: install | $root/requirements.txt
8 |
9 | build $root/install: phony $builddir/pip_installed
10 |
--------------------------------------------------------------------------------
/implementations/Python_jsonpath2/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Python_jsonpath2
2 | builddir = $root/build
3 |
4 | rule install
5 | command = pip3 install -r $root/requirements.txt --prefix $builddir/deps && echo > $out
6 |
7 | build $builddir/pip_installed: install | $root/requirements.txt
8 |
9 | build $root/install: phony $builddir/pip_installed
10 |
--------------------------------------------------------------------------------
/implementations/JavaScript_json-p3/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/JavaScript_json-p3
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && npm install) && echo > $out
6 |
7 | build $builddir/node_modules_installed: install | $root/package.json $root/package-lock.json
8 |
9 | build $root/install: phony $builddir/node_modules_installed
10 |
--------------------------------------------------------------------------------
/implementations/JavaScript_json-p3/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "javascript_json-p3",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "json-p3": "^2.2.2"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/JavaScript_jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && npm install) && echo > $out
6 |
7 | build $builddir/node_modules_installed: install | $root/package.json $root/package-lock.json
8 |
9 | build $root/install: phony $builddir/node_modules_installed
10 |
--------------------------------------------------------------------------------
/implementations/PHP_remorhaz-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/PHP_remorhaz-jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && composer install) && echo > $out
6 |
7 | build $builddir/composer_installed: install | $root/composer.json $root/composer.lock
8 |
9 | build $root/install: phony $builddir/composer_installed
10 |
--------------------------------------------------------------------------------
/implementations/PHP_softcreatr-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/PHP_softcreatr-jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && composer update) && echo > $out
6 |
7 | build $builddir/composer_installed: install | $root/composer.json $root/composer.lock
8 |
9 | build $root/install: phony $builddir/composer_installed
10 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/main.pl:
--------------------------------------------------------------------------------
1 | use JSON::MaybeXS;
2 | use JSON::Path;
3 | use Try::Tiny;
4 |
5 | # Avoid hashes yielding unreproducible stack traces.
6 | $Carp::MaxArgNums = -1;
7 |
8 | my $json = decode_json join("", );
9 |
10 | my $jpath = JSON::Path->new($ARGV[0]);
11 | my @result = $jpath->values($json);
12 | print encode_json(\@result) . "\n";
13 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPath.Net/Dotnet_JsonPath.Net.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net6.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_less_than/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"key": "43"},
11 | {"key": "42"},
12 | {"key": "41"},
13 | {"key": "value"},
14 | {"some": "value"}
15 | ]
16 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "javascript_jsonpath",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "jsonpath": "^1.1.1"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpathly/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/JavaScript_jsonpathly
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && npm install) && echo > $out
6 |
7 | build $builddir/node_modules_installed: install | $root/package.json $root/package-lock.json
8 |
9 | build $root/install: phony $builddir/node_modules_installed
10 |
--------------------------------------------------------------------------------
/implementations/Python_python-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Python_python-jsonpath
2 | builddir = $root/build
3 |
4 | rule install
5 | command = pip3 install -r $root/requirements.txt --prefix $builddir/deps && echo > $out
6 |
7 | build $builddir/pip_installed: install | $root/requirements.txt
8 |
9 | build $root/install: phony $builddir/pip_installed
10 |
--------------------------------------------------------------------------------
/implementations/dotNET_Json.NET/Dotnet_Json.NET.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net6.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPath.Net/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/dotNET_JsonPath.Net
2 | builddir = $root/build
3 |
4 | rule build
5 | command = $root/install.sh $$(basename $$(dirname $out))
6 |
7 | build $builddir/Dotnet_JsonPath.Net: build | $root/Dotnet_JsonPath.Net.csproj $root/Program.cs
8 |
9 | build $root/install: phony $builddir/Dotnet_JsonPath.Net
10 |
--------------------------------------------------------------------------------
/implementations/dotNET_Manatee.Json/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/dotNET_Manatee.Json
2 | builddir = $root/build
3 |
4 | rule build
5 | command = $root/install.sh $$(basename $$(dirname $out))
6 |
7 | build $builddir/Dotnet_Manatee.Json: build | $root/Dotnet_Manatee.Json.csproj $root/Program.cs
8 |
9 | build $root/install: phony $builddir/Dotnet_Manatee.Json
10 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_greater_than/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"key": "43"},
11 | {"key": "42"},
12 | {"key": "41"},
13 | {"key": "value"},
14 | {"some": "value"}
15 | ]
16 |
--------------------------------------------------------------------------------
/implementations/Elixir_warpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Elixir_warpath
2 |
3 | rule compile
4 | command = (cd $root && mix local.hex --if-missing --force && mix deps.get && mix escript.build && cd - && mv $root/jsonpath $out)
5 |
6 | build $root/build/jsonpath: compile | $root/lib/cli.ex $root/mix.exs $root/mix.lock
7 |
8 | build $root/install: phony $root/build/jsonpath
9 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath-plus/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/JavaScript_jsonpath-plus
2 | builddir = $root/build
3 |
4 | rule install
5 | command = (cd $root && npm install) && echo > $out
6 |
7 | build $builddir/node_modules_installed: install | $root/package.json $root/package-lock.json
8 |
9 | build $root/install: phony $builddir/node_modules_installed
10 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpathly/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "javascript_jsonpathly",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "jsonpathly": "^2.0.3"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/implementations/dotNET_Manatee.Json/Dotnet_Manatee.Json.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net6.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_greater_than_or_equal/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"key": "43"},
11 | {"key": "42"},
12 | {"key": "41"},
13 | {"key": "value"},
14 | {"some": "value"}
15 | ]
16 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_less_than_or_equal/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"key": "43"},
11 | {"key": "42"},
12 | {"key": "41"},
13 | {"key": "value"},
14 | {"some": "value"}
15 | ]
16 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_equals/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"key": "43"},
11 | {"key": "42"},
12 | {"key": "41"},
13 | {"key": "value"},
14 | {"some": "value"}
15 | ]
16 |
--------------------------------------------------------------------------------
/implementations/Elixir_ExJsonPath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Elixir_ExJsonPath
2 |
3 | rule compile
4 | command = (cd $root && mix local.hex --if-missing --force && mix deps.get && mix escript.build && cd - && mv $root/jsonpath $out)
5 |
6 | build $root/build/jsonpath: compile | $root/lib/cli.ex $root/mix.exs $root/mix.lock
7 |
8 | build $root/install: phony $root/build/jsonpath
9 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonCons.JsonPath/Dotnet_JsonCons.JsonPath.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net6.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_negation_and_less_than/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": 0},
3 | {"key": 42},
4 | {"key": -1},
5 | {"key": 41},
6 | {"key": 43},
7 | {"key": 42.0001},
8 | {"key": 41.9999},
9 | {"key": 100},
10 | {"key": "43"},
11 | {"key": "42"},
12 | {"key": "41"},
13 | {"key": "value"},
14 | {"some": "value"}
15 | ]
16 |
--------------------------------------------------------------------------------
/implementations/JavaScript_jsonpath-plus/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "javascript_jsonpath-plus",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "jsonpath-plus": "^10.3.0"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/implementations/Elixir_jaxon/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Elixir_jaxon
2 |
3 | rule compile
4 | command = (cd $root && mix local.hex --if-missing --force && mix deps.get && mix compile)
5 |
6 | build $root/build/dev/dev/lib/jsonpath/ebin/jsonpath.app: compile | $root/lib/jsonpath.ex $root/mix.exs $root/mix.lock
7 |
8 | build $root/install: phony $root/build/dev/dev/lib/jsonpath/ebin/jsonpath.app
9 |
--------------------------------------------------------------------------------
/implementations/Elixir_jaxon/lib/jsonpath.ex:
--------------------------------------------------------------------------------
1 | defmodule Mix.Tasks.Execute do
2 | use Mix.Task
3 |
4 | def run(args) do
5 | json = IO.read(:stdio, :all)
6 | stream = [json]
7 | selector = hd(args)
8 | result = stream |> Jaxon.Stream.from_enumerable() |> Jaxon.Stream.query(Jaxon.Path.parse!(selector)) |> Enum.to_list()
9 | IO.puts(Poison.encode!(result))
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-ohler55-ojg/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-ohler55-ojg
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Rust_jsonpath
2 | builddir = $root/build
3 |
4 | rule compile
5 | command = (cd $root && cargo build) && mv $root/target/debug/rust_jsonpath $out && rm -r $root/target
6 |
7 | build $builddir/rust_jsonpath: compile | $root/src/main.rs $root/Cargo.lock $root/Cargo.toml
8 |
9 | build $root/install: phony $builddir/rust_jsonpath
10 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonCons.JsonPath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/dotNET_JsonCons.JsonPath
2 | builddir = $root/build
3 |
4 | rule build
5 | command = $root/install.sh $$(basename $$(dirname $out))
6 |
7 | build $builddir/Dotnet_JsonCons.JsonPath: build | $root/Dotnet_JsonCons.JsonPath.csproj $root/Program.cs
8 |
9 | build $root/install: phony $builddir/Dotnet_JsonCons.JsonPath
10 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-bhmj-jsonslice/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-bhmj-jsonslice
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-spyzhov-ajson/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-spyzhov-ajson
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-theory-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-theory-jsonpath
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/src/with_docker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | readonly target_image=json-path-comparison
6 |
7 | docker build -t "$target_image" "$script_dir"
8 |
9 | docker run --env-file="${script_dir}/docker_env_file.txt" --rm -v "$(pwd):/json-path-comparison" -w "/json-path-comparison" -i "$target_image" "$@"
10 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | readonly gems_target="${script_dir}/gems"
6 |
7 | filter_runtime_differences() {
8 | sed 's/^[1234567890]*: unexpected token/unexpected token/'
9 | }
10 |
11 | GEM_PATH="$gems_target" ruby "$script_dir"/main.rb "$@" | filter_runtime_differences
12 |
--------------------------------------------------------------------------------
/src/clean.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "$script_dir"/..
7 |
8 | docker rmi json-path-comparison || true
9 | find ./implementations -type d -name "build" | xargs rm -r
10 | # This removes checked in artifacts, so this needs a fresh new build to restore
11 | rm -rf build docs regression_suite bug_reports
12 |
--------------------------------------------------------------------------------
/implementations/C_json-glib/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/C_json-glib
2 | builddir = $root/build
3 |
4 | rule build
5 | command = mkdir -p $$(dirname $out) && gcc `pkg-config --cflags glib-2.0 json-glib-1.0 gio-unix-2.0` $in `pkg-config --libs glib-2.0 json-glib-1.0 gio-unix-2.0` -o $out
6 |
7 | build $builddir/main: build $root/main.c | $root/main.c
8 |
9 | build $root/install: phony $builddir/main
10 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-PaesslerAG-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-PaesslerAG-jsonpath
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-oliveagle-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-oliveagle-jsonpath
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/implementations/Raku_JSON-Path/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Raku_JSON-Path
2 | builddir = $root/build
3 |
4 | rule install_json_path
5 | command = mkdir -p $builddir/deps && zef update && zef install --to=$builddir/deps JSON::Fast 'JSON::Path:ver<1.9>' && echo > $out
6 |
7 | build $builddir/zef_installed_locally: install_json_path
8 |
9 | build $root/install: phony $builddir/zef_installed_locally
10 |
--------------------------------------------------------------------------------
/implementations/dotNET_JsonPathLib/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/dotNET_JsonPathLib
2 | builddir = $root/build
3 |
4 | rule build
5 | command = $root/install.sh $$(basename $$(dirname $out))
6 |
7 | build $builddir/Dotnet_JsonPathLib: build | $root/Dotnet_JsonPathLib.csproj $root/Program.cs $root/JsonNetValueSystem.cs $root/nuget.config
8 |
9 | build $root/install: phony $builddir/Dotnet_JsonPathLib
10 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_lib/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Rust_jsonpath_lib
2 | builddir = $root/build
3 |
4 | rule compile
5 | command = (cd $root && cargo build) && mv $root/target/debug/rust_jsonpath_lib $out && rm -r $root/target
6 |
7 | build $builddir/rust_jsonpath_lib: compile | $root/src/main.rs $root/Cargo.lock $root/Cargo.toml
8 |
9 | build $root/install: phony $builddir/rust_jsonpath_lib
10 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-vmware-labs-yaml-jsonpath/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Golang_github.com-vmware-labs-yaml-jsonpath
2 | builddir = $root/build
3 |
4 | # Hack target directory because golang is bad, again
5 | rule build
6 | command = cd $root && go build -o build/main
7 |
8 | build $builddir/main: build | $root/main.go $root/go.mod $root/go.sum
9 |
10 | build $root/install: phony $builddir/main
11 |
--------------------------------------------------------------------------------
/implementations/Rust_jsonpath_plus/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Rust_jsonpath_plus
2 | builddir = $root/build
3 |
4 | rule compile
5 | command = (cd $root && cargo build) && mv $root/target/debug/rust_jsonpath_plus $out && rm -r $root/target
6 |
7 | build $builddir/rust_jsonpath_plus: compile | $root/src/main.rs $root/Cargo.lock $root/Cargo.toml
8 |
9 | build $root/install: phony $builddir/rust_jsonpath_plus
10 |
--------------------------------------------------------------------------------
/queries/bracket_notation_after_recursive_descent/document.json:
--------------------------------------------------------------------------------
1 | [
2 | "first",
3 | {
4 | "key": [
5 | "first nested",
6 | {
7 | "more": [
8 | {
9 | "nested": ["deepest", "second"]
10 | },
11 | ["more", "values"]
12 | ]
13 | }
14 | ]
15 | }
16 | ]
17 |
--------------------------------------------------------------------------------
/implementations/Golang_github.com-vmware-labs-yaml-jsonpath/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.13
4 |
5 | require (
6 | github.com/dprotaso/go-yit v0.0.0-20240618133044-5a0af90af097 // indirect
7 | github.com/icza/dyno v0.0.0-20200205103839-49cb13720835
8 | github.com/stretchr/testify v1.7.0
9 | github.com/vmware-labs/yaml-jsonpath v0.3.2
10 | gopkg.in/yaml.v2 v2.4.0 // indirect
11 | gopkg.in/yaml.v3 v3.0.1
12 | )
13 |
--------------------------------------------------------------------------------
/implementations/Perl_JSON-Path/cpanm.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 | build_dir="${script_dir}/build"
6 | cpanm="${build_dir}/cpanm"
7 |
8 | if [[ ! -x "$cpanm" ]]; then
9 | mkdir -p "$build_dir"
10 | curl -L -o "$cpanm" https://raw.githubusercontent.com/miyagawa/cpanminus/master/cpanm && chmod a+x "$cpanm"
11 | fi
12 |
13 | "$cpanm" "$@"
14 |
--------------------------------------------------------------------------------
/implementations/Rust_serde_json_path/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Rust_serde_json_path
2 | builddir = $root/build
3 |
4 | rule compile
5 | command = (cd $root && cargo build) && mv $root/target/debug/rust_serde_json_path $out && rm -r $root/target
6 |
7 | build $builddir/rust_serde_json_path: compile | $root/src/main.rs $root/Cargo.lock $root/Cargo.toml
8 |
9 | build $root/install: phony $builddir/rust_serde_json_path
10 |
--------------------------------------------------------------------------------
/implementations/Swift_Sextant/build.ninja:
--------------------------------------------------------------------------------
1 | root = implementations/Swift_Sextant
2 | builddir = $root/build
3 |
4 | rule build
5 | command = cd $root && swift package update && swift build && cd - && cp $root/.build/*/debug/Swift_Sextant $out && rm -r $root/.build
6 |
7 | build $builddir/Swift_Sextant: build | $root/Package.swift $root/Sources/Swift_Sextant/main.swift
8 |
9 | build $root/install: phony $builddir/Swift_Sextant
10 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_different_grouped_operators/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "a": true
4 | },
5 | {
6 | "a": true,
7 | "b": true
8 | },
9 | {
10 | "a": true,
11 | "b": true,
12 | "c": true
13 | },
14 | {
15 | "b": true,
16 | "c": true
17 | },
18 | {
19 | "a": true,
20 | "c": true
21 | },
22 | {
23 | "c": true
24 | },
25 | {
26 | "b": true
27 | }
28 | ]
29 |
--------------------------------------------------------------------------------
/implementations/Ruby_jsonpath/main.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # frozen_string_literal: true
3 |
4 | require 'jsonpath'
5 | require 'multi_json'
6 |
7 | jsonpath = nil
8 | begin
9 | jsonpath = JsonPath.new(ARGV[0])
10 | rescue Exception => e
11 | puts(e)
12 | exit(2)
13 | end
14 |
15 | begin
16 | puts MultiJson.encode(jsonpath.on(MultiJson.decode(STDIN.read)))
17 | rescue Exception => e
18 | puts(e)
19 | exit(false)
20 | end
21 |
--------------------------------------------------------------------------------
/implementations/Elixir_ExJsonPath/mix.lock:
--------------------------------------------------------------------------------
1 | %{
2 | "exjsonpath": {:hex, :exjsonpath, "0.9.0", "87e593eb0deb53aa0688ca9f9edc9fb3456aca83c82245f83201ea04d696feba", [:mix], [], "hexpm", "8d7a8e9ba784e1f7a67c6f1074a3ac91a3a79a45969514ee5d95cea5bf749627"},
3 | "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"},
4 | }
5 |
--------------------------------------------------------------------------------
/queries/filter_expression_with_equals_string/document.json:
--------------------------------------------------------------------------------
1 | [
2 | {"key": "some"},
3 | {"key": "value"},
4 | {"key": null},
5 | {"key": 0},
6 | {"key": 1},
7 | {"key": -1},
8 | {"key": ""},
9 | {"key": {}},
10 | {"key": []},
11 | {"key": "valuemore"},
12 | {"key": "morevalue"},
13 | {"key": ["value"]},
14 | {"key": {"some": "value"}},
15 | {"key": {"key": "value"}},
16 | {"some": "value"}
17 | ]
18 |
--------------------------------------------------------------------------------
/implementations/Bash_JSONPath.sh/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | tag="$(cat "${script_dir}/tag")"
7 | version="$(sed 's/^v//' <<< "$tag")"
8 |
9 | readonly source_url="https://raw.githubusercontent.com/mclarkson/JSONPath.sh/${tag}/JSONPath.sh"
10 | readonly target_path="$1"
11 |
12 | curl --fail -L "$source_url" -o "$target_path"
13 | chmod a+x "$target_path"
14 |
--------------------------------------------------------------------------------
/implementations/Erlang_ejsonpath/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | readonly script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5 |
6 | cd "${script_dir}"
7 |
8 | # Don't store crash dump, will make ninja continuously rebuild this project
9 | export ERL_CRASH_DUMP=/dev/null
10 | erl -noshell -run jsonpath start "$1" -s init stop -pa ./build/default/lib/jsonpath/ebin/ ./build/default/lib/jiffy/ebin/ ./build/default/lib/ejsonpath/ebin/
11 |
--------------------------------------------------------------------------------
/src/sort_json_array.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import sys
3 | import json
4 |
5 | def serialize(j):
6 | return json.dumps(j, sort_keys=True)
7 |
8 | def main():
9 | try:
10 | j = json.loads(sys.stdin.read())
11 | except Exception as e:
12 | print(e)
13 | sys.exit(1)
14 |
15 | if type(j) == list:
16 | j.sort(key = serialize)
17 |
18 | print(json.dumps(j))
19 |
20 | if __name__ == '__main__':
21 | sys.exit(main())
22 |
--------------------------------------------------------------------------------
/implementations/Raku_JSON-Path/main.p6:
--------------------------------------------------------------------------------
1 | use JSON::Path;
2 | use JSON::Fast;
3 |
4 | my $json = from-json join("", $*IN.lines);
5 |
6 | my $jp;
7 |
8 | try {
9 | $jp = JSON::Path.new(@*ARGS[0]);
10 |
11 | CATCH {
12 | default {
13 | $*ERR.say: .message;
14 | exit 2;
15 | }
16 | }
17 | }
18 |
19 | try {
20 | print to-json $jp.values($json);
21 | CATCH {
22 | default {
23 | $*ERR.say: .message;
24 | exit 1;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------