JsonToTable

Accepts a json object and returns a markdown. Supports clickable links.

python · Filters And Transformers

Details

IDJsonToTable
Languagepython
From Version5.5.0
Docker Imagedemisto/python3:3.12.13.10404775
Tagstransformer entirelist general

README

Accepts a json object and returns a markdown.

Script Data


Name Description
Script Type python3
Tags transformer, entirelist, general
Cortex XSOAR Version 5.5.0

Inputs


Argument Name Description
value The json to transform to a markdown table.
title The markdown title.
headers A comma-separated list of table header values. Default will include all available table headers.
is_auto_json_transform Try to auto json transform.
json_transform_properties A json to transform the value to strings. The syntax is: `{“header_key”: {“keys”: [<item1>, …], “is_nested”: true/false}}`
url_keys Comma-separated list of keys in the given JSON table that should be turned into a clickable URL.

Outputs


There are no outputs for this script.

Script Examples

Example command

!JsonToTable value=`[{"name": "name1", "value": "val1"}, {"name": "name2", "value" : "val2"}]`

Context Example

{}

Human Readable Output

name value
name1 val1
name2 val2

Example command

!JsonToTable value=`[{"name": "name1", "value": "val1"}, {"name": "name2", "value" : "val2"}]` headers=name

Context Example

{}

Human Readable Output

name
name1
name2

Example command

!JsonToTable value=`[{"name": {"first": "a", "second": "b", "not_important": "no"}, "value": "val1"}, {"name": {"first": "c", "second": "d", "not_important": "no"}, "value": "val2"}]` is_auto_json_transform=true

Context Example

{}

Human Readable Output

name value

first: a
second: b
not_important: no
val1

first: c
second: d
not_important: no
val2

Example command

!JsonToTable value=`[{"name": {"first": "a", "second": "b", "not_important": "no"}, "value": "val1"}, {"name": {"first": "c", "second": "d", "not_important": "no"}, "value": "val2"}]` json_transform_properties=`{"name": {"keys": ["first", "second"]}}`

Context Example

{}

Human Readable Output

name value

first: a
second: b
val1

first: c
second: d
val2

Example command

!JsonToTable value=`[{"name": {"first": {"a": "val"}, "second": "b", "not_important": "no"}, "value": "val1"}, {"name": {"first": {"a": "val2"}, "second": "d", "not_important": "no"}, "value": "val2"}]` json_transform_properties=`{"name": {"keys": ["a", "second"], "is_nested": "true"}}`

Context Example

{}

Human Readable Output

name value
first:
a: val

second: b
val1
first:
a: val2

second: d
val2
import demistomock as demisto
import JsonToTable
import pytest

ONE_ROW_TABLE = "|header1|\n|---|\n| val1 |\n"
MULTI_LINE_TABLE = "|header1|\n|---|\n| val1 |\n| val2 |\n"


@pytest.mark.parametrize(
    argnames="value, expected_md",
    argvalues=[
        ({"header1": "val1"}, ONE_ROW_TABLE),
        ('{"header1": "val1"}', ONE_ROW_TABLE),
        ('{"header1": ["val1"]}', ONE_ROW_TABLE),
        ([{"header1": "val1"}, {"header1": "val2"}], MULTI_LINE_TABLE),
        ('[{"header1": "val1"}, {"header1": "val2"}]', MULTI_LINE_TABLE),
        (['[{"header1": "val1"}, {"header1": "val2"}]'], MULTI_LINE_TABLE),
        ('{"header1": ["val1", "val2"]}', MULTI_LINE_TABLE),
    ],
)
def test_json_to_table__sanity(mocker, value, expected_md):
    """
    Given - json or string value to be transformed to a MD table
    When - run the JsonToTable automation
    Then - Validate the Md are as expected
    """
    mocker.patch.object(demisto, "args", return_value={"value": value})
    mocker.patch.object(JsonToTable, "return_results")
    JsonToTable.main()

    assert JsonToTable.return_results.call_args[0][0].readable_output == expected_md