Objectify JSON
Make accessing JSON like data more convenient.
Features
- Access dict value via dot
.
(data.a.b.c
). - Always return
ObjectifyJSON
type, which holds the data with type of dict, list or any other primitive types. - Use
x._data
to get the real data. - Always return
ObjectifyJSON(None)
if doesn't exist. - An CLI tool named
object
to process JSON data.
Install
pip3 install objectify-json
Example
See test.py
Functions to process data in batch
- The return value is always
ObjectifyJOSN
too! - The return value of lambda funtions will always be unwrapped to primitive types.
- Most of the
fn_*
functions accept optionalunwrap
parameter to enable passing the underlying value as primitive types to lambda. Default is False. - When used in CLI tool, if it failed getting the property by property name, e.g.
map
, it will retry to get function with prefixfn_
added to the name. This will simplify writting the CLI command.
Common
Following methods of ObjectifyJOSN
accept optional unwrap
to unwrap ObjectifyJOSN
data to the underlying built-in data, the default value is False
.
-
fn_map(fn, unwrap=False)
:map
on the iterator -
fn_reduce(fn, initializer=None, unwrap=False)
:reduce
on the iterator, lambda as the first positional parameter, optionalinitializer
parameter will be passed to built-inreduce
. -
fn_lambda(fn, unwrap=False)
: value in-and-out -
fn_filter(fn, unwrap=False)
:filter
on the iterator
Dict
-
fn_keys()
: Return keys as list. -
fn_values()
: Return values as list. -
fn_items()
: Return items as list. Element has the typetuple
, e.g.("key", "value")
. -
fn_include_keys(keys)
: Filter dict. Keep thekeys
you give. -
fn_exclude_keys(keys)
: Filter dict. Remove thekeys
you give. -
fn_filter_by_value(fn)
: Filter dict. Filter by the lambda you give, which accept the value of dict item. -
fn_filter_by_kv(fn)
: Filter dict. Filter by the lambda you give, which acceptkey
andvalue
two variables. -
fn_update(key, fn, unwrap=False)
: Update dict value. The lambda you give accept the origin value and return a new value. -
fn_items_update(fn, unwrap=False)
: Update dict value. The lambda you give acceptkey
andvalue
two variables and return a new value. -
fn_rename(mapping)
: Update dict key. Themapping
is a list of two-elements list.
List
-
fn_sort(fn)
: Sort the list in place. The lambda you give will be passed askey
argument to thesort
method of list. -
fn_dedup(fn=None, all=True)
: Dedup the elements in list. Ifall
ifFalse
, the duplication will checked by comparing current value between last value, else will compare to all appeared before.