printer json BUGFIX union realtype value print

Fixes #1729
diff --git a/src/printer_json.c b/src/printer_json.c
index 0682309..3b45a6c 100644
--- a/src/printer_json.c
+++ b/src/printer_json.c
@@ -333,10 +333,19 @@
 json_print_value(struct jsonpr_ctx *ctx, const struct lyd_value *val)
 {
     ly_bool dynamic;
+    LY_DATA_TYPE basetype;
     const char *value = val->realtype->plugin->print(ctx->ctx, val, LY_VALUE_JSON, NULL, &dynamic, NULL);
 
+    basetype = val->realtype->basetype;
+
+print_val:
     /* leafref is not supported */
-    switch (val->realtype->basetype) {
+    switch (basetype) {
+    case LY_TYPE_UNION:
+        /* use the resolved type */
+        basetype = val->subvalue->value.realtype->basetype;
+        goto print_val;
+
     case LY_TYPE_BINARY:
     case LY_TYPE_STRING:
     case LY_TYPE_BITS:
@@ -346,7 +355,6 @@
     case LY_TYPE_UINT64:
     case LY_TYPE_DEC64:
     case LY_TYPE_IDENT:
-    case LY_TYPE_UNION:
         json_print_string(ctx->out, value);
         break;