/** * 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); }
json = JsonSerializer.create().deep(true).serialize(resultValue); status = 200; statusMessage = "OK";
/** * 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 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 void testDeepSerializationCycles() { JsonSerializer serializer = new JsonSerializer(); String json = serializer.deep(true).serialize(people); assertAttribute("zipcode", json); assertEquals(2, occurs(pedroZip.getZipcode(), json)); assertAttributeMissing("person", json); }
@Test void testParseSerializeCatalog() { JsonParsers.forEachParser(jsonParser -> { String json = loadJSON("citm_catalog"); Catalog catalog = jsonParser.parse(json, Catalog.class); String newJson = new JsonSerializer().deep(true).serialize(catalog); Catalog jsonCatalog = jsonParser.parse(newJson, Catalog.class); assertCatalog(jsonCatalog); }); }
@Test void testDeepSerializationWithExcludes() { JsonSerializer serializer = new JsonSerializer(); String peopleJson = serializer.exclude("people.work").deep(true).serialize(network); assertAttribute("firstname", peopleJson); assertStringValue("Igor", peopleJson); assertAttributeMissing("work", peopleJson); assertStringValue("173 Hackers Drive", peopleJson); assertAttribute("home", peopleJson); assertAttribute("phones", peopleJson); }
@Test void testDeepSerializationWithIncludeOverrides() { JsonSerializer serializer = new JsonSerializer(); String peopleJson = serializer.include("people.hobbies").deep(true).serialize(network); assertAttribute("firstname", peopleJson); assertStringValue("Igor", peopleJson); assertAttribute("hobbies", peopleJson); assertStringValue("read", peopleJson); assertStringValue("run", peopleJson); assertStringValue("code", peopleJson); }
@Test void testCircularDependency_none() { JsonParsers.forEachParser(jsonParser -> { A a1 = new A(); a1.setName("a1"); A a2 = new A(); a2.setName("a2"); B b = new B(); b.setProp("value"); b.setA(a2); // b -> a2, no circ.dep. // circular reference a1.setPi(b); JsonSerializer serializer = new JsonSerializer().deep(true); String json = serializer.serialize(a1); jsonParser.parse(json); assertTrue(json.contains("a1")); assertTrue(json.contains("a2")); }); }
@Test void testDeepSerialization() { JsonSerializer serializer = new JsonSerializer(); String peopleJson = serializer.deep(true).serialize(network); assertAttribute("name", peopleJson); assertStringValue("My Network", peopleJson); assertAttribute("firstname", peopleJson); assertStringValue("Igor", peopleJson); assertStringValue("Modesty", peopleJson); assertAttribute("lastname", peopleJson); assertStringValue("Spasic", peopleJson); assertAttributeMissing("hobbies", peopleJson); // annotation explicitly excludes this assertStringValueMissing("read", peopleJson); }
@Test void testParseCatalogAsMap() { JsonParsers.forEachParser(jsonParser -> { String json = loadJSON("citm_catalog"); Map catalog = jsonParser .map("values.keys", Long.class) .map("venueNames.keys", String.class) .useAltPaths() .parse(json); String newJson = new JsonSerializer().deep(true).serialize(catalog); Catalog jsonCatalog = jsonParser.parse(newJson, Catalog.class); assertCatalog(jsonCatalog); }); }
@Test void testCircularDependency_property() { JsonParsers.forEachParser(jsonParser -> { A a1 = new A(); a1.setName("a1"); A a2 = new A(); a2.setName("a2"); B b = new B(); b.setProp("value"); b.setA(a1); // b -> a1, has circ.dep. // circular reference a1.setPi(b); JsonSerializer serializer = new JsonSerializer().deep(true); String json = serializer.serialize(a1); jsonParser.parse(json); assertEquals(1, StringUtil.count(json, "a1")); assertEquals(0, StringUtil.count(json, "a2")); assertEquals(1, StringUtil.count(json, "pi")); }); }
@Test void testCircularDependency_propertyArray() { JsonParsers.forEachParser(jsonParser -> { A a1 = new A(); a1.setName("a1"); A a2 = new A(); a2.setName("a2"); B b = new B(); b.setProp("value"); b.setA(a1); // b -> a1, has circ.dep. b.addP(a1); b.addP(a2); // circular reference a1.setPi(b); JsonSerializer serializer = new JsonSerializer().deep(true); String json = serializer.serialize(a1); jsonParser.parse(json); assertEquals(1, StringUtil.count(json, "a1")); assertEquals(1, StringUtil.count(json, "a2")); }); } }
@Test void testParseSerializeCatalogNotDeep() { JsonParsers.forEachParser(jsonParser -> { String json = loadJSON("citm_catalog"); Catalog catalog = jsonParser.parse(json, Catalog.class); String newJson = new JsonSerializer().deep(false).serialize(catalog); Catalog jsonCatalog = jsonParser.parse(newJson, Catalog.class); assertNull(jsonCatalog.getPerformances()); assertNull(jsonCatalog.getAreaNames()); assertNull(jsonCatalog.getEvents()); assertNull(jsonCatalog.getAudienceSubCategoryNames()); assertNull(jsonCatalog.getSeatCategoryNames()); assertNull(jsonCatalog.getSubTopicNames()); assertNull(jsonCatalog.getTopicNames()); assertNull(jsonCatalog.getTopicSubTopics()); assertNull(jsonCatalog.getVenueNames()); }); }
@Override public String serialize(Object object, boolean deep) { return new JsonSerializer().deep(deep).serialize(object); }
@Override public String serialize(Object object, boolean deep) { return JsonSerializer .create() .deep(deep) .use(PodMultiMap.class, POD_MULTI_MAP_JSON_SERIALIZER) .use(long.class, LONG_TO_STRING_JSON_SERIALIZER) .use(Long.class, LONG_TO_STRING_JSON_SERIALIZER) .serialize(object); }
/** * 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; }