apoc.convert.getJsonPropertyMap

Details

Syntax

apoc.convert.getJsonPropertyMap(node, key [, path, pathOptions ])

Description

Converts a serialized JSON object from the property of the given NODE into a Cypher MAP.

Arguments

Name

Type

Description

node

NODE

The node containing a JSON stringified map.

key

STRING

The property key to convert.

path

STRING

A JSON path expression used to extract a certain part from the node property string. The default is: ``.

pathOptions

LIST<STRING>

JSON path options: ('ALWAYS_RETURN_LIST', 'AS_PATH_LIST', 'DEFAULT_PATH_LEAF_TO_NULL', 'REQUIRE_PROPERTIES', 'SUPPRESS_EXCEPTIONS') The default is: null.

Returns

MAP

Usage examples

The examples in this section are based on the following sample graph:

CREATE (:Person {json:'{a:[1,2,3]}'});
MATCH (p:Person)
RETURN apoc.convert.getJsonPropertyMap(p, "json") AS output;
Results
Output

{a: [1, 2, 3]}

Moreover, we can customize the Json path options, adding as third parameter (pathOptions) a list of strings, where the strings are based on Enum<Option>. The default value is ["SUPPRESS_EXCEPTIONS", "DEFAULT_PATH_LEAF_TO_NULL"]. Note that we can also insert [], that is "without options". So, with a (n:JsonPathNode {prop: '{"columns":{"col2":{"_id":"772col2"}}}'}) we can execute (with default pathOptions):

MATCH (n:JsonPathNode) RETURN apoc.convert.getJsonPropertyMap(n, 'prop', '$.columns.col2') AS output;
Results
output

{ "_id": "772col2" }

or, with custom path options:

MATCH (n:JsonPathNode) RETURN apoc.convert.getJsonPropertyMap(n, 'prop', '$.columns.col2', ['ALWAYS_RETURN_LIST']) AS path
Results
Failed to invoke function apoc.convert.getJsonPropertyMap: Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.LinkedHashMap<java.lang.Object,java.lang.Object> out of START_ARRAY token at [Source: UNKNOWN; line: -1, column: -1]