# Import YAML file into Mathematica

Has anyone implemented the import of YAML data files into Mathematica? I suppose some sort of transformation into a nested list of rules would be the way to do it. Thanks

• There are many YAML parsers for Java, and Mathematica has J/Link. It should be possible to use those two together. – Gustavo Delfino Sep 30 '14 at 12:46

I just wrote an importer: https://github.com/zbjornson/MYaml. It's built on SnakeYAML and supports all language-independent types.

Example 2.10 from the spec:

In[1]:= ImportString["---
hr:
- Mark McGwire
# Following node labeled SS
- &SS Sammy Sosa
rbi:
- *SS # Subsequent occurrence
- Ken Griffey", "YAML"]
Out[1]= {
"hr" -> {"Mark McGwire", "Sammy Sosa"},
"rbi" -> {"Sammy Sosa", "Ken Griffey"}
}


More examples in the test suite.

• For demonstration purposes, can you show how your importer acts on a sample YAML file? – J. M.'s torpor Oct 12 '16 at 3:21
• @J.M. good call, added an example. – ZachB Oct 12 '16 at 5:42
• Consider posting it on packagedata.net too – Szabolcs Oct 12 '16 at 6:41
• Another importer was written just a few days ago, see at the end of comment thread here: mathematica.stackexchange.com/q/127300/12 – Szabolcs Oct 12 '16 at 6:43
• @JessRiedel You're correct. I'm not on a computer with M right now but can double check in the morning that a fresh install works. What version of M are you using? You can try manually loading this file to register the importer, something like << FileNameJoin[{\$BaseDirectory, "SystemFiles", "Formats", "YAML", "Import.m"}]. – ZachB Sep 6 '18 at 2:21

I wrote such a cross-platform tool to convert other formats to wolfram format: WolframExchange

### Usage

wex in.yml      # check file but no output
wex in.yml -t   # output only text
wex in.yml -c   # output only binary
wex in.yml -ct  # output both text and binary


### Result

• This is very cool! – b3m2a1 Mar 23 '20 at 8:30

If you cannot find a YAML importer, consider converting the YAML to JSON and importing that. It'll give you the list of rules you'd expect.