@Test public void encodeCustomTypeInstant() { Instant now = Instant.now(); String json = Json.encode(now); assertNotNull(json); // the RFC is one way only Instant decoded = Instant.from(ISO_INSTANT.parse(json.substring(1, json.length() - 1))); assertEquals(now, decoded); }
@Test public void testGenericDecoding() { Pojo original = new Pojo(); original.value = "test"; String json = Json.encode(Collections.singletonList(original)); List<Pojo> correct; correct = Json.decodeValue(json, new TypeReference<List<Pojo>>() {}); assertTrue(((List)correct).get(0) instanceof Pojo); assertEquals(original.value, correct.get(0).value); // same must apply if instead of string we use a buffer correct = Json.decodeValue(Buffer.buffer(json, "UTF8"), new TypeReference<List<Pojo>>() {}); assertTrue(((List)correct).get(0) instanceof Pojo); assertEquals(original.value, correct.get(0).value); List incorrect = Json.decodeValue(json, List.class); assertFalse(incorrect.get(0) instanceof Pojo); assertTrue(incorrect.get(0) instanceof Map); assertEquals(original.value, ((Map)(incorrect.get(0))).get("value")); }
@Test public void testNullBytesDecoding() { Pojo original = new Pojo(); Pojo decoded = Json.decodeValue("{\"bytes\":null}", Pojo.class); assertEquals(original.bytes, decoded.bytes); }
@Test public void encodeCustomTypeBinaryNull() { byte[] data = null; String json = Json.encode(data); assertNotNull(json); assertEquals("null", json); }
@Test public void testInstantDecoding() { Pojo original = new Pojo(); original.instant = Instant.from(ISO_INSTANT.parse("2018-06-20T07:25:38.397Z")); Pojo decoded = Json.decodeValue("{\"instant\":\"2018-06-20T07:25:38.397Z\"}", Pojo.class); assertEquals(original.instant, decoded.instant); }
@Test public void encodeCustomTypeInstantNull() { Instant now = null; String json = Json.encode(now); assertNotNull(json); assertEquals("null", json); }
@Test public void encodeCustomTypeBinary() { byte[] data = new byte[] { 'h', 'e', 'l', 'l', 'o'}; String json = Json.encode(data); assertNotNull(json); // base64 encoded hello assertEquals("\"aGVsbG8=\"", json); }
@Test public void testNullInstantDecoding() { Pojo original = new Pojo(); Pojo decoded = Json.decodeValue("{\"instant\":null}", Pojo.class); assertEquals(original.instant, decoded.instant); }
private <T> void assertDecodeValue(Buffer buffer, T expected, TypeReference<T> ref) { Type type = ref.getType(); Class<?> clazz = type instanceof Class ? (Class<?>) type : (Class<?>) ((ParameterizedType) type).getRawType(); assertEquals(expected, Json.decodeValue(buffer, clazz)); assertEquals(expected, Json.decodeValue(buffer, ref)); assertEquals(expected, Json.decodeValue(buffer.toString(StandardCharsets.UTF_8), clazz)); assertEquals(expected, Json.decodeValue(buffer.toString(StandardCharsets.UTF_8), ref)); Buffer nullValue = Buffer.buffer("null"); assertNull(Json.decodeValue(nullValue, clazz)); assertNull(Json.decodeValue(nullValue, ref)); assertNull(Json.decodeValue(nullValue.toString(StandardCharsets.UTF_8), clazz)); assertNull(Json.decodeValue(nullValue.toString(StandardCharsets.UTF_8), ref)); } }
@Test public void encodeToBuffer() { Buffer json = Json.encodeToBuffer("Hello World!"); assertNotNull(json); // json strings are always UTF8 assertEquals("\"Hello World!\"", json.toString("UTF-8")); }
@Test public void encodeCustomTypeInstant() { Instant now = Instant.now(); String json = Json.encode(now); assertNotNull(json); // the RFC is one way only Instant decoded = Instant.from(ISO_INSTANT.parse(json.substring(1, json.length() - 1))); assertEquals(now, decoded); }
@Test public void testGenericDecoding() { Pojo original = new Pojo(); original.value = "test"; String json = Json.encode(Collections.singletonList(original)); List<Pojo> correct; correct = Json.decodeValue(json, new TypeReference<List<Pojo>>() {}); assertTrue(((List)correct).get(0) instanceof Pojo); assertEquals(original.value, correct.get(0).value); // same must apply if instead of string we use a buffer correct = Json.decodeValue(Buffer.buffer(json, "UTF8"), new TypeReference<List<Pojo>>() {}); assertTrue(((List)correct).get(0) instanceof Pojo); assertEquals(original.value, correct.get(0).value); List incorrect = Json.decodeValue(json, List.class); assertFalse(incorrect.get(0) instanceof Pojo); assertTrue(incorrect.get(0) instanceof Map); assertEquals(original.value, ((Map)(incorrect.get(0))).get("value")); }
@Test public void encodeCustomTypeBinary() { byte[] data = new byte[] { 'h', 'e', 'l', 'l', 'o'}; String json = Json.encode(data); assertNotNull(json); // base64 encoded hello assertEquals("\"aGVsbG8=\"", json); }
@Test public void testInstantDecoding() { Pojo original = new Pojo(); original.instant = Instant.from(ISO_INSTANT.parse("2018-06-20T07:25:38.397Z")); Pojo decoded = Json.decodeValue("{\"instant\":\"2018-06-20T07:25:38.397Z\"}", Pojo.class); assertEquals(original.instant, decoded.instant); }
@Test public void encodeCustomTypeInstantNull() { Instant now = null; String json = Json.encode(now); assertNotNull(json); assertEquals("null", json); }
@Test public void encodeCustomTypeBinaryNull() { byte[] data = null; String json = Json.encode(data); assertNotNull(json); assertEquals("null", json); }
@Test public void testNullInstantDecoding() { Pojo original = new Pojo(); Pojo decoded = Json.decodeValue("{\"instant\":null}", Pojo.class); assertEquals(original.instant, decoded.instant); }
@Test public void testNullBytesDecoding() { Pojo original = new Pojo(); Pojo decoded = Json.decodeValue("{\"bytes\":null}", Pojo.class); assertEquals(original.bytes, decoded.bytes); }
@Test public void encodeToBuffer() { Buffer json = Json.encodeToBuffer("Hello World!"); assertNotNull(json); // json strings are always UTF8 assertEquals("\"Hello World!\"", json.toString("UTF-8")); }
private <T> void assertDecodeValue(Buffer buffer, T expected, TypeReference<T> ref) { Type type = ref.getType(); Class<?> clazz = type instanceof Class ? (Class<?>) type : (Class<?>) ((ParameterizedType) type).getRawType(); assertEquals(expected, Json.decodeValue(buffer, clazz)); assertEquals(expected, Json.decodeValue(buffer, ref)); assertEquals(expected, Json.decodeValue(buffer.toString(StandardCharsets.UTF_8), clazz)); assertEquals(expected, Json.decodeValue(buffer.toString(StandardCharsets.UTF_8), ref)); Buffer nullValue = Buffer.buffer("null"); assertNull(Json.decodeValue(nullValue, clazz)); assertNull(Json.decodeValue(nullValue, ref)); assertNull(Json.decodeValue(nullValue.toString(StandardCharsets.UTF_8), clazz)); assertNull(Json.decodeValue(nullValue.toString(StandardCharsets.UTF_8), ref)); } }