/** * Returns JSON serialized by default {@link JsonSerializer}. */ @Override public String toString() { return JsonSerializer.create().deep(true).serialize(map); }
@Override public String toString() { return JsonSerializer.create().deep(true).serialize(this); }
/** * Creates a JSON response from an exception. Response body will have information about the * exception and response status will be set to 500. */ public static JsonResult of(final Exception exception) { final HashMap<String, Object> errorMap = new HashMap<>(); errorMap.put("message", ExceptionUtil.message(exception)); errorMap.put("error", exception.getClass().getName()); errorMap.put("cause", exception.getCause() != null ? exception.getCause().getClass().getName() : null); final ArrayList<String> details = new ArrayList<>(); final StackTraceElement[] ste = ExceptionUtil.getStackTrace(exception, null, null); for (StackTraceElement stackTraceElement : ste) { details.add(stackTraceElement.toString()); } errorMap.put("details", details); final String json = JsonSerializer.create().deep(true).serialize(errorMap); return new JsonResult(json).status(HttpStatus.error500().internalError()); }
/** * Creates JSON result from given object. The object will be serialized to JSON. */ public static JsonResult of(final Object object) { final String json = JsonSerializer.create().deep(true).serialize(object); return new JsonResult(json); }
/** * Encodes the {@link SimTok} to JSON string. */ public String encode(final SimTok simTok) { final String json = JsonSerializer.create().deep(true).serialize(simTok); final String p1 = Base64.encodeToString("JoddSimTok" + SALT_ROUNDS); final String p2 = Base64.encodeToString(json); final String salt = BCrypt.gensalt(SALT_ROUNDS); final String p3 = BCrypt.hashpw(p1 + "." + p2 + "." + SECRET, salt); return p1 + "." + p2 + "." + p3; }
@Test void testBooleanField() { Active active = new Active(); String json = JsonSerializer.create().serialize(active); System.out.println(json); assertTrue(json.contains("\"active\":true")); assertTrue(json.contains("\"inactive\":3")); } }
@Test void testClassMetaData() { String json = JsonSerializer .create() .withClassMetadata(true) .serialize(new Foo()); assertTrue(json.contains("\"__class\":\"" + Foo.class.getName() + "\"")); json = JsonSerializer.create().withClassMetadata(false).serialize(123); assertEquals("123", json); json = JsonSerializer.create().withClassMetadata(true).serialize(123); assertEquals("123", json); }
@Test public void testDouble_Infinity() { JsonParsers.forEachParser(jsonParser -> { String json = JsonSerializer.create().serialize(Double.POSITIVE_INFINITY); assertEquals("\"+Infinity\"", json); Double d = jsonParser.parse(json, Double.class); assertEquals(Double.POSITIVE_INFINITY, d.doubleValue()); json = JsonSerializer.create().serialize(Double.NEGATIVE_INFINITY); assertEquals("\"-Infinity\"", json); d = jsonParser.parse(json, Double.class); assertEquals(Double.NEGATIVE_INFINITY, d.doubleValue()); }); }
@Test void testUuidSerialization() { UUID uuid = UUID.randomUUID(); String json = JsonSerializer .create() .serialize(uuid); UUID uuid2 = JsonParser .create() .parse(json, UUID.class); assertEquals(uuid, uuid2); } }
@Test public void testFloat_Infinity() { JsonParsers.forEachParser(jsonParser -> { String json = JsonSerializer.create().serialize(Float.POSITIVE_INFINITY); assertEquals("\"+Infinity\"", json); Float d = jsonParser.parse(json, Float.class); assertEquals(Float.POSITIVE_INFINITY, d.floatValue()); json = JsonSerializer.create().serialize(Float.NEGATIVE_INFINITY); assertEquals("\"-Infinity\"", json); d = jsonParser.parse(json, Float.class); assertEquals(Float.NEGATIVE_INFINITY, d.floatValue()); }); }
@Test void testSerializeSets() { HitList hitList = new HitList(); hitList.setNames(new HashSet<>()); hitList.getNames().add("Joe"); hitList.getNames().add("Pig"); hitList.setNumbers(new HashSet<>()); hitList.getNumbers().add(173); hitList.getNumbers().add(22); String json = JsonSerializer .create() .deep(true) .serialize(hitList); assertTrue(json.contains("\"names\"")); assertTrue(json.contains("\"numbers\"")); assertTrue(json.contains("\"Pig\"")); assertTrue(json.contains("\"Joe\"")); assertTrue(json.contains("173")); assertTrue(json.contains("22")); }
@Test public void testDouble_NaN() { JsonParsers.forEachParser(jsonParser -> { String json = JsonSerializer.create().serialize(Double.NaN); assertEquals("\"NaN\"", json); Double d = jsonParser.parse(json, Double.class); assertTrue(d.isNaN()); }); }
@Test public void testFloat_NaN() { JsonParsers.forEachParser(jsonParser -> { String json = JsonSerializer.create().serialize(Float.NaN); assertEquals("\"NaN\"", json); Float d = jsonParser.parse(json, Float.class); assertTrue(d.isNaN()); }); }
@Test @EnabledOnOs(value = {OS.WINDOWS}) void testFiles_on_windows() { FileMan fileMan = new FileMan(); File userHome = new File(SystemUtil.info().getHomeDir()); fileMan.setFile(userHome); final String json = JsonSerializer.create().serialize(fileMan); // C:\Users\xxxx will be user home on windows hsost; char '\' is escpaed in json therefore the execution of "String#replace" final String userhome_escpaed = SystemUtil.info().getHomeDir().replace("\\", "\\\\"); assertTrue(json.contains(userhome_escpaed)); }
@Test @EnabledOnOs(value = {OS.AIX, OS.LINUX, OS.MAC, OS.SOLARIS}) void testFiles_on_linux() { FileMan fileMan = new FileMan(); File userHome = new File(SystemUtil.info().getHomeDir()); fileMan.setFile(userHome); String json = JsonSerializer.create().serialize(fileMan); assertTrue(json.contains(SystemUtil.info().getHomeDir())); }
@Test void testToString() { jsonArray.add("foo").add(123); assertEquals(JsonSerializer.create().serialize(jsonArray), jsonArray.toString()); }
@Test void testToString() { JsonObject jsonObject = new JsonObject(); jsonObject.put("foo", "bar"); assertEquals(JsonSerializer.create().serialize(jsonObject), jsonObject.toString()); }
@Test void testSerializeStringEscapes() { JsonParsers.forEachParser(jsonParser -> { String path = "/foo/bar"; String json = JsonSerializer .create() .strictStringEncoding(true) .serialize(path); assertEquals("\"\\/foo\\/bar\"", json); String path2 = jsonParser.parse(json); assertEquals(path, path2); }); }
@Test void testEncode() throws Exception { jsonArray.add("foo"); jsonArray.add(123); jsonArray.add(1234L); jsonArray.add(1.23f); jsonArray.add(2.34d); jsonArray.add(true); byte[] bytes = randomByteArray(10); jsonArray.add(bytes); jsonArray.addNull(); jsonArray.add(new JsonObject().put("foo", "bar")); jsonArray.add(new JsonArray().add("foo").add(123)); String strBytes = Base64.getEncoder().encodeToString(bytes); String expected = "[\"foo\",123,1234,1.23,2.34,true,\"" + strBytes + "\",null,{\"foo\":\"bar\"},[\"foo\",123]]"; String json = JsonSerializer.create().serialize(jsonArray); assertEquals(expected, json); }
@Test void testEncode() { JsonParsers.forEachParser(jsonParser -> { JsonObject jsonObject = new JsonObject(); jsonObject.put("mystr", "foo"); jsonObject.put("mycharsequence", new StringBuilder("oob")); jsonObject.put("myint", 123); jsonObject.put("mylong", 1234L); jsonObject.put("myfloat", 1.23f); jsonObject.put("mydouble", 2.34d); jsonObject.put("myboolean", true); byte[] bytes = randomByteArray(10); jsonObject.put("mybinary", bytes); jsonObject.putNull("mynull"); jsonObject.put("myobj", new JsonObject().put("foo", "bar")); jsonObject.put("myarr", new JsonArray().add("foo").add(123)); String json = JsonSerializer.create().serialize(jsonObject); JsonObject expectedParsedJsonObject = jsonParser.parseAsJsonObject(json); // need to replace float with double, as decoding will do so jsonObject.put("myfloat", 1.23d); assertEquals(expectedParsedJsonObject, jsonObject); }); }