🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more

json_select

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json_select

0.1.4
95

Supply Chain Security

100

Vulnerability

100

Quality

100

Maintenance

100

License

Shell access

Supply chain risk

This module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.

Found 1 instance in 1 package

Uses eval

Supply chain risk

Package uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.

Found 1 instance in 1 package

Version published
Maintainers
1
Created

JSONSelect Build Status

CSS-like selectors for JSON.

More info about the JSON:select format

Installation

From your terminal:

gem install json_select

In your Gemfile:

gem 'json_select'

Usage

require 'json_select'

json = { # This would normally be loaded with something like yajl-ruby
  "name" => {
    "first" => "Lloyd",
    "last" => "Hilaiel"
  },
  "favoriteColor" => "yellow",
  "languagesSpoken" => [
    {
      "language" => "Bulgarian",
      "level" => "advanced"
    },
    {
      "language" => "English",
      "level" => "native"
    },
    {
      "language" => "Spanish",
      "level" => "beginner"
    }
  ],
  "seatingPreference" => [ "window", "aisle" ],
  "drinkPreference" => [ "beer", "whiskey", "wine" ],
  "weight" => 172
}

JSONSelect('string:first-child').test(json)    # => true
JSONSelect('string:first-child').match(json)   # => "window"
JSONSelect('string:first-child').matches(json) # => ["window", "beer"]

Language support

✓ — Level 1*
Any node

✓ — Level 1T
A node of type T, where T is one string, number, object, array, boolean, or null

✓ — Level 1T.key
A node of type T which is the child of an object and is the value its parents key property

✓ — Level 1T."complex key"
Same as previous, but with property name specified as a JSON string

✓ — Level 1T:root
A node of type T which is the root of the JSON document

✓ — Level 1T:nth-child(n)
A node of type T which is the nth child of an array parent

✓ — Level 2T:nth-last-child(n)
A node of type T which is the nth child of an array parent counting from the end

✓ — Level 1T:first-child
A node of type T which is the first child of an array parent (equivalent to T:nth-child(1))

✓ — Level 2T:last-child
A node of type T which is the last child of an array parent (equivalent to T:nth-last-child(1))

✓ — Level 2T:only-child
A node of type T which is the only child of an array parent

✓ — Level 2T:empty
A node of type T which is an array or object with no child

✓ — Level 1T U
A node of type U with an ancestor of type T

✓ — Level 1T > U
A node of type U with a parent of type T

✗ — Level 2T ~ U
A node of type U with a sibling of type T

✓ — Level 1S1, S2
Any node which matches either selector S1 or S2

✗ — Level 3T:has(S)
A node of type T which has a child node satisfying the selector S

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with Rakefile or version. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright (c) 2011 Simon Menke. See LICENSE for details.

FAQs

Package last updated on 12 Mar 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts