diff --git a/build_json.mk b/build_json.mk
index 2e23ed1489..8820a8f4a6 100644
--- a/build_json.mk
+++ b/build_json.mk
@@ -23,5 +23,5 @@ endif
 
 # Generate the keymap.c
 ifneq ("$(KEYMAP_JSON)","")
-    _ = $(shell bin/qmk-json-keymap -f $(KEYMAP_JSON) -o $(KEYMAP_C))
+    _ = $(shell test -e $(KEYMAP_C) || bin/qmk-json-keymap $(KEYMAP_JSON) -o $(KEYMAP_C))
 endif
diff --git a/lib/python/qmk/cli/json/keymap.py b/lib/python/qmk/cli/json/keymap.py
index 35fc8f9c0e..e2d0b58093 100755
--- a/lib/python/qmk/cli/json/keymap.py
+++ b/lib/python/qmk/cli/json/keymap.py
@@ -28,8 +28,8 @@ def main(cli):
         exit(1)
 
     # Environment processing
-    if cli.args.output == ('-'):
-        cli.args.output = None
+    if cli.config.general.output == ('-'):
+        cli.config.general.output = None
 
     # Parse the configurator json
     with open(qmk.path.normpath(cli.args.filename), 'r') as fd:
@@ -38,17 +38,17 @@ def main(cli):
     # Generate the keymap
     keymap_c = qmk.keymap.generate(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers'])
 
-    if cli.args.output:
-        output_dir = os.path.dirname(cli.args.output)
+    if cli.config.general.output:
+        output_dir = os.path.dirname(cli.config.general.output)
 
         if not os.path.exists(output_dir):
             os.makedirs(output_dir)
 
-        output_file = qmk.path.normpath(cli.args.output)
+        output_file = qmk.path.normpath(cli.config.general.output)
         with open(output_file, 'w') as keymap_fd:
             keymap_fd.write(keymap_c)
 
-        cli.log.info('Wrote keymap to %s.', cli.args.output)
+        cli.log.info('Wrote keymap to %s.', cli.config.general.output)
 
     else:
         print(keymap_c)
diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py
index 6eccab788a..396b53a6f5 100644
--- a/lib/python/qmk/keymap.py
+++ b/lib/python/qmk/keymap.py
@@ -63,7 +63,7 @@ def generate(keyboard, layout, layers):
         layer_txt.append('\t[%s] = %s(%s)' % (layer_num, layout, layer_keys))
 
     keymap = '\n'.join(layer_txt)
-    keymap_c = template(keyboard, keymap)
+    keymap_c = template(keyboard)
 
     return keymap_c.replace('__KEYMAP_GOES_HERE__', keymap)