That is, any JSON code is a valid NUON code, therefore a valid Nushell code.
Compared to JSON, NUON is more "human-friendly".
For example, comments are allowed and commas are not required.
One limitation of NUON currently is that it cannot represent all of the Nushell [data types](types_of_data.md).
Most notably, NUON does not allow the serialization of blocks.
## Handling Strings
An important part of working with data coming from outside Nu is that it's not always in a format that Nu understands. Often this data is given to us as a string.
Let's imagine that we're given this data file:
```nu
open people.txt
# => Octavia | Butler | Writer
# => Bob | Ross | Painter
# => Antonio | Vivaldi | Composer
```
Each bit of data we want is separated by the pipe ('|') symbol, and each person is on a separate line. Nu doesn't have a pipe-delimited file format by default, so we'll have to parse this ourselves.
The first thing we want to do when bringing in the file is to work with it a line at a time:
```nu
open people.txt | lines
# => ───┬──────────────────────────────
# => 0 │ Octavia | Butler | Writer
# => 1 │ Bob | Ross | Painter
# => 2 │ Antonio | Vivaldi | Composer
# => ───┴──────────────────────────────
```
We can see that we're working with the lines because we're back into a list. Our next step is to see if we can split up the rows into something a little more useful. For that, we'll use the [`split`](/commands/docs/split.md) command. [`split`](/commands/docs/split.md), as the name implies, gives us a way to split a delimited string. We will use [`split`](/commands/docs/split.md)'s `column` subcommand to split the contents across multiple columns. We tell it what the delimiter is, and it does the rest:
```nu
open people.txt | lines | split column "|"
# => ───┬──────────┬───────────┬───────────
# => # │ column1 │ column2 │ column3
# => ───┼──────────┼───────────┼───────────
# => 0 │ Octavia │ Butler │ Writer
# => 1 │ Bob │ Ross │ Painter
# => 2 │ Antonio │ Vivaldi │ Composer
# => ───┴──────────┴───────────┴───────────
```
That _almost_ looks correct. It looks like there's an extra space there. Let's [`trim`](/commands/docs/str_trim.md) that extra space:
```nu
open people.txt | lines | split column "|" | str trim
# => ───┬─────────┬─────────┬──────────
# => # │ column1 │ column2 │ column3
# => ───┼─────────┼─────────┼──────────
# => 0 │ Octavia │ Butler │ Writer
# => 1 │ Bob │ Ross │ Painter
# => 2 │ Antonio │ Vivaldi │ Composer
# => ───┴─────────┴─────────┴──────────
```
Not bad. The [`split`](/commands/docs/split.md) command gives us data we can use. It also goes ahead and gives us default column names:
```nu
open people.txt | lines | split column "|" | str trim | get column1
# => ───┬─────────
# => 0 │ Octavia
# => 1 │ Bob
# => 2 │ Antonio
# => ───┴─────────
```
We can also name our columns instead of using the default names:
```nu
open people.txt | lines | split column "|" first_name last_name job | str trim
# => ───┬────────────┬───────────┬──────────