Pyjo.JSON.Pointer - JSON Pointers

import Pyjo.JSON.Pointer

pointer = Pyjo.JSON.Pointer.new({'foo': [23, 'bar']})
print(pointer.get('/foo/1'))
if pointer.contains('/foo'):
    print('Contains "/foo"')

Pyjo.JSON.Pointer is a relaxed implementation of RFC 6901.

Classes

Pyjo_JSON_Pointer.__init__(data=None)
pointer = Pyjo.JSON.Pointer.new()
pointer = Pyjo.JSON.Pointer.new({'foo': 'bar'})

Build new Pyjo.JSON.Pointer object.

class Pyjo.JSON.Pointer.Pyjo_JSON_Pointer(data=None)

Pyjo.JSON.Pointer inherits all attributes and methods from Pyjo.Base and implements the following new ones.

__init__(data=None)
pointer = Pyjo.JSON.Pointer.new()
pointer = Pyjo.JSON.Pointer.new({'foo': 'bar'})

Build new Pyjo.JSON.Pointer object.

contains(pointer)
boolean = pointer.contains('/foo/1')

Check if data contains a value that can be identified with the given JSON Pointer.

# True
Pyjo.JSON.Pointer.new({u'♥': 'pyjo'}).contains(u'/♥')
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5]}).contains('/foo')
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5]}).contains('/baz/1')

# False
Pyjo.JSON.Pointer.new({u'♥': 'pyjo'}).contains(u'/☃')
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5]}).contains('/bar')
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5]}).contains('/baz/9')
data = None
data = pointer.data
pointer.data = {'foo': 'bar'}

Data structure to be processed.

get(pointer)
value = pointer.get('/foo/bar')

Extract value from L</”data”> identified by the given JSON Pointer.

# "pyjo"
Pyjo.JSON.Pointer.new({u'♥': 'pyjo'}).get(u'/♥')

# "bar"
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5, 6]}).get('/foo')

# "4"
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5, 6]}).get('/baz/0')

# "6"
Pyjo.JSON.Pointer.new({'foo': 'bar', 'baz': [4, 5, 6]}).get('/baz/2')

Numeric key is prefered before string key.

# "number"
Pyjo.JSON.Pointer.new({4: 'number', '4': 'string'}).get('4')
Pyjo.JSON.Pointer.object

alias of Pyjo_JSON_Pointer