Markdownが普及することによって、単なるドキュメントフォーマットとしての役割以上のものが求められるようになっています。もっとプログラマブルに他のシステムと連携させるのです。 今回はその一例と言えるjson2mdを紹介します。JSONフォーマットからMarkdown記法に変換するソフトウェアです。

json2mdの使い方

JSONファイルのデモです。単なるJSONファイルではなく、どちらかというとHTMLに近いものがあります。

[
    { h1: "JSON To Markdown" }
  , { blockquote: "A JSON to Markdown converter." }
  , { img: [
        { title: "Some image", source: "https://example.com/some-image.png" }
      , { title: "Another image", source: "https://example.com/some-image1.png" }
      , { title: "Yet another image", source: "https://example.com/some-image2.png" }
      ]
    }
  , { h2: "Features" }
  , { ul: [
        "Easy to use"
      , "You can programatically generate Markdown content"
      , "..."
      ]
    }
  , { h2: "How to contribute" }
  , { ol: [
        "Fork the project"
      , "Create your branch"
      , "Raise a pull request"
      ]
    }
  , { h2: "Code blocks" }
  , { p: "Below you can see a code block example." }
  , { "code": {
        language: "js"
      , content: [
          "function sum (a, b) {"
        , "   return a + b;"
        , "}"
        , "sum(1, 2);"
        ]
      }
    }

これを変換すると、次のようにMarkdown記法が取得できます。

$ node app.js 
# JSON To Markdown
> A JSON to Markdown converter.

![Some image](https://example.com/some-image.png)

![Another image](https://example.com/some-image1.png)

![Yet another image](https://example.com/some-image2.png)

## Features

 - Easy to use
 - You can programatically generate Markdown content
 - ...

## How to contribute

 1. Fork the project
 2. Create your branch
 3. Raise a pull request

## Code blocks

Below you can see a code block example.

```js
function sum (a, b) {
   return a + b;
}
sum(1, 2);

json2mdはシステムから自動的にJSONを出力し、それをMarkdownに変換するといったような使い方が考えられます。また、HTMLからこのJSONフォーマットに変換できれば、他のフォーマットからMarkdown記法に変換するのにも使えそうです。

json2mdはnode/JavaScript製のソフトウェアです(ライセンスはThe KINDLY Licenseです)。

[IonicaBizau/json2md](https://github.com/IonicaBizau/json2md)