Examples

Simple example

The JSON simple.json:

{
    "main": [
        {
            "a": {
                "b": "1",
                "c": "2"
            },
            "d": "3"
        },
        {
            "a": {
                "b": "4",
                "c": "5"
            },
            "d": "6"
        }
    ]
}

Can be converted to/from a spreadsheet like simple/main.csv:

a/b

a/c

d

1

2

3

4

5

6

Using the commands:

flatten-tool unflatten -f csv examples/simple -o examples/simple.json
flatten-tool flatten -f csv examples/simple.json -o examples/simple

One to many relationships (JSON arrays)

There are multiple shapes of spreadsheet that can be used to produce the same JSON arrays. E.g. to produce this JSON:

{
    "main": [
        {
            "id": "1",
            "d": "6",
            "a": [
                {
                    "b": "2",
                    "c": "3"
                },
                {
                    "b": "4",
                    "c": "5"
                }
            ]
        },
        {
            "id": "7",
            "d": "12",
            "a": [
                {
                    "b": "8",
                    "c": "9"
                },
                {
                    "b": "10",
                    "c": "11"
                }
            ]
        }
    ]
}

We can use these Spreadsheets:

id

a/0/b

a/0/c

1

2

3

1

4

5

7

8

9

7

10

11

id

d

1

6

7

12

These are also the spreadsheets that flatten-tool’s flatten (JSON to Spreadsheet) will produce.

Commands used to generate this:

flatten-tool unflatten -f csv examples/array_multisheet -o examples/array_multisheet.json
flatten-tool flatten -f csv examples/array.json -o examples/array_multisheet

However, there are other “shapes” of spreadsheet that can produce the same JSON.

New columns for each item of the array:

id

a/0/b

a/0/c

a/1/b

a/1/c

d

1

2

3

4

5

6

7

8

9

10

11

12

flatten-tool unflatten -f csv examples/array_pointer -o examples/array.json

Repeated rows:

id

a/0/b

a/0/c

d

1

2

3

6

1

4

5

6

7

8

9

12

7

10

11

12

flatten-tool unflatten -f csv examples/array_repeat_rows -o examples/array.json

Arrays within arrays

{
    "main": [
        {
            "id": "1",
            "d": "6",
            "a": [
                {
                    "id": "2",
                    "b": [
                        {
                            "c": "3"
                        },
                        {
                            "c": "3a"
                        }
                    ]
                },
                {
                    "id": "4",
                    "b": [
                        {
                            "c": "5"
                        },
                        {
                            "c": "5a"
                        }
                    ]
                }
            ]
        },
        {
            "id": "7",
            "d": "12",
            "a": [
                {
                    "id": "8",
                    "b": [
                        {
                            "c": "9"
                        },
                        {
                            "c": "9a"
                        }
                    ]
                },
                {
                    "id": "10",
                    "b": [
                        {
                            "c": "11"
                        },
                        {
                            "c": "11a"
                        }
                    ]
                }
            ]
        }
    ]
}

id

a/0/id

1

2

1

4

7

8

7

10

id

d

1

6

7

12