diff --git a/src/printer_json.c b/src/printer_json.c
index 2cf8cef..3e488de 100644
--- a/src/printer_json.c
+++ b/src/printer_json.c
@@ -401,9 +401,9 @@
         PRINT_COMMA;
         json_print_member2(ctx, (struct lyd_node *)node, attr->format, &attr->prefix, attr->name, 0);
 
-        if (attr->hint & (LYD_NODE_OPAQ_ISBOOLEAN | LYD_NODE_OPAQ_ISNUMBER)) {
+        if (attr->hints & (LYD_VALHINT_BOOLEAN | LYD_VALHINT_DECNUM)) {
             ly_print_(ctx->out, "%s", attr->value[0] ? attr->value : "null");
-        } else if (attr->hint & LYD_NODE_OPAQ_ISEMPTY) {
+        } else if (attr->hints & LYD_VALHINT_EMPTY) {
             ly_print_(ctx->out, "[null]");
         } else {
             json_print_string(ctx->out, attr->value);
@@ -754,7 +754,7 @@
 {
     ly_bool first = 1, last = 1;
 
-    if (node->hint & LYD_NODE_OPAQ_ISLIST) {
+    if (node->hints & (LYD_NODEHINT_LIST | LYD_NODEHINT_LEAFLIST)) {
         const struct lyd_node_opaq *prev = (const struct lyd_node_opaq *)node->prev;
         const struct lyd_node_opaq *next = (const struct lyd_node_opaq *)node->next;
         if (prev->next && matching_node((const struct lyd_node *)prev, (const struct lyd_node *)node)) {
@@ -768,18 +768,18 @@
     if (first) {
         LY_CHECK_RET(json_print_member2(ctx, node->parent, node->format, &node->prefix, node->name, 0));
 
-        if (node->hint & LYD_NODE_OPAQ_ISLIST) {
+        if (node->hints & (LYD_NODEHINT_LIST | LYD_NODEHINT_LEAFLIST)) {
             LY_CHECK_RET(json_print_array_open(ctx, (struct lyd_node *)node));
             LEVEL_INC;
         }
     }
-    if (node->child || (node->hint & LYD_NODE_OPAQ_ISLIST)) {
+    if (node->child || (node->hints & (LYD_NODEHINT_LIST | LYD_NODEHINT_LEAFLIST))) {
         LY_CHECK_RET(json_print_inner(ctx, (struct lyd_node *)node));
         LEVEL_PRINTED;
     } else {
-        if (node->hint & LYD_VALUE_PARSE_ISEMPTY) {
+        if (node->hints & LYD_VALHINT_EMPTY) {
             ly_print_(ctx->out, "[null]");
-        } else if (node->hint & (LYD_VALUE_PARSE_ISBOOLEAN | LYD_VALUE_PARSE_ISNUMBER)) {
+        } else if (node->hints & (LYD_VALHINT_BOOLEAN | LYD_VALHINT_DECNUM)) {
             ly_print_(ctx->out, "%s", node->value);
         } else {
             /* string */
@@ -791,7 +791,7 @@
         json_print_attributes(ctx, (const struct lyd_node *)node, 0);
 
     }
-    if (last && (node->hint & LYD_NODE_OPAQ_ISLIST)) {
+    if (last && (node->hints & (LYD_NODEHINT_LIST | LYD_NODEHINT_LEAFLIST))) {
         json_print_array_close(ctx);
         LEVEL_DEC;
         LEVEL_PRINTED;
