public Value parse(String json) {
        return this.delegate.parse(json);
    }
@Test
    public void testParseJson() throws Exception {
        final JsonParser parser = new JsonParser();
        final Value msgpackValue = parser.parse("{\"col1\": 1, \"col2\": \"foo\", \"col3\": [1,2,3], \"col4\": {\"a\": 1}}");
        assertTrue(msgpackValue.isMapValue());
        final Map<Value, Value> map = msgpackValue.asMapValue().map();
        assertEquals(1, map.get(key("col1")).asIntegerValue().asInt());
        assertEquals("foo", map.get(key("col2")).asStringValue().toString());
        // Check array value
        final Value col3Value = map.get(key("col3"));
        assertTrue(col3Value.isArrayValue());
        assertEquals(
                Arrays.asList(1,2,3),
                col3Value.asArrayValue().list().stream()
                        .map(v -> v.asIntegerValue().asInt())
                        .collect(Collectors.toList())
        );
        // Check map value
        final Value col4Value = map.get(key("col4"));
        assertTrue(col4Value.isMapValue());
        final Value aOfCol4 = col4Value.asMapValue().map().get(key("a"));
        assertEquals(1, aOfCol4.asIntegerValue().asInt());
    }