parser json UPDATE allowing JSON 'null' value for inner nodes (#2218)

diff --git a/src/parser_json.c b/src/parser_json.c
index 6facc07..d7f2fa5 100644
--- a/src/parser_json.c
+++ b/src/parser_json.c
@@ -1491,11 +1491,11 @@
     r = lydjson_data_check_opaq(lydctx, snode, &type_hints);
     if (r == LY_SUCCESS) {
         assert(snode->nodetype & (LYD_NODE_TERM | LYD_NODE_INNER | LYD_NODE_ANY));
-        if (snode->nodetype & LYD_NODE_TERM) {
-            if ((lydctx->parse_opts & LYD_PARSE_JSON_NULL) && (*status == LYJSON_NULL)) {
-                /* do not do anything if value is JSON 'null' */
-                goto cleanup;
-            } else if ((*status != LYJSON_ARRAY) && (*status != LYJSON_NUMBER) && (*status != LYJSON_STRING) &&
+        if ((lydctx->parse_opts & LYD_PARSE_JSON_NULL) && (*status == LYJSON_NULL)) {
+            /* do not do anything if value is JSON 'null' */
+            goto cleanup;
+        } else if (snode->nodetype & LYD_NODE_TERM) {
+            if ((*status != LYJSON_ARRAY) && (*status != LYJSON_NUMBER) && (*status != LYJSON_STRING) &&
                     (*status != LYJSON_FALSE) && (*status != LYJSON_TRUE) && (*status != LYJSON_NULL)) {
                 rc = LY_ENOT;
                 goto cleanup;
@@ -1522,10 +1522,6 @@
             r = lydjson_parse_instance_inner(lydctx, snode, ext, status, node);
             LY_DPARSER_ERR_GOTO(r, rc = r, lydctx, cleanup);
         } else {
-            if ((lydctx->parse_opts & LYD_PARSE_JSON_NULL) && (*status == LYJSON_NULL)) {
-                /* do not do anything if value is JSON 'null' */
-                goto cleanup;
-            }
             /* create any node */
             r = lydjson_parse_any(lydctx, snode, ext, status, node);
             LY_DPARSER_ERR_GOTO(r, rc = r, lydctx, cleanup);
diff --git a/tests/utests/data/test_parser_json.c b/tests/utests/data/test_parser_json.c
index f731161..1eff781 100644
--- a/tests/utests/data/test_parser_json.c
+++ b/tests/utests/data/test_parser_json.c
@@ -508,6 +508,11 @@
     CHECK_PARSE_LYD("{\"a:unknown\":{\"a\":\"val\",\"b\":5}}", 0, LYD_VALIDATE_PRESENT, tree);
     CHECK_LYD_STRING(tree, LYD_PRINT_SHRINK | LYD_PRINT_WITHSIBLINGS, "{}");
     lyd_free_all(tree);
+
+    data = "{\"a:c\": null}";
+    PARSER_CHECK_ERROR(data, 0, LYD_VALIDATE_PRESENT, tree, LY_EVALID, "Expecting JSON name/object but container \"c\" is represented in input data as name/null.", NULL, 1);
+    CHECK_PARSE_LYD(data, LYD_PARSE_JSON_NULL, LYD_VALIDATE_PRESENT, tree);
+    assert_null(tree);
 }
 
 static void