jodd.json.JsonParser类的使用及代码示例

x33g5p2x  于2022-01-22 转载在 其他  
字(9.9k)|赞(0)|评价(0)|浏览(179)

本文整理了Java中jodd.json.JsonParser类的一些代码示例,展示了JsonParser类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。JsonParser类的具体详情如下:
包路径:jodd.json.JsonParser
类名称:JsonParser

JsonParser介绍

[英]Simple, developer-friendly JSON parser. It focuses on easy usage and type mappings. Uses Jodd's type converters, so it is natural companion for Jodd projects.

This JSON parser also works in #lazy(boolean) mode. This mode is for top performance usage: parsing is done very, very lazy. While you can use all the mappings and other tools, for best performance the lazy mode should be used only with maps and lists (no special mappings). Also, the performance has it's price: more memory consumption, because the original input is hold until the result is in use.

See: http://www.ietf.org/rfc/rfc4627.txt
[中]简单、开发人员友好的JSON解析器。它侧重于易于使用和类型映射。使用Jodd的类型转换器,因此它是Jodd项目的天然伴侣。
这个JSON解析器也可以在#惰性(布尔)模式下工作。此模式用于最高性能用途:解析非常非常缓慢。虽然您可以使用所有映射和其他工具,但为了获得最佳性能,惰性模式应仅用于映射和列表(无特殊映射)。此外,性能也有它的代价:更多的内存消耗,因为原始输入会一直保持到结果被使用为止。
见:http://www.ietf.org/rfc/rfc4627.txt

代码示例

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testKeys() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. String json = "{\"123\" : \"name\"}";
  5. Map<Long, String> map = jsonParser.map("keys", Long.class).parse(json);
  6. assertEquals(1, map.size());
  7. assertEquals("name", map.get(Long.valueOf(123)));
  8. });
  9. JsonParsers.forEachParser(jsonParser -> {
  10. String json = "{\"eee\" : {\"123\" : \"name\"}}";
  11. Map<String, Map<Long, String>> map2 = jsonParser.map("values.keys", Long.class).parse(json);
  12. assertEquals(1, map2.size());
  13. Map<Long, String> map = map2.get("eee");
  14. assertEquals(1, map.size());
  15. assertEquals("name", map.get(Long.valueOf(123)));
  16. });
  17. }

代码示例来源:origin: oblac/jodd

  1. /**
  2. * Parses input JSON to a list with specified component type.
  3. */
  4. public <T> List<T> parseAsList(final String string, final Class<T> componentType) {
  5. return new JsonParser()
  6. .map(JsonParser.VALUES, componentType)
  7. .parse(string);
  8. }

代码示例来源:origin: oblac/jodd

  1. /**
  2. * Parses request body into the target type.
  3. */
  4. protected Object parseRequestBody(final String body, final Class targetType) {
  5. return JsonParser.create().parse(body, targetType);
  6. }

代码示例来源:origin: oblac/jodd

  1. /**
  2. * Creates a lazy implementation of the JSON parser.
  3. */
  4. public static JsonParser createLazyOne() {
  5. return new JsonParser().lazy(true);
  6. }

代码示例来源:origin: oblac/jodd

  1. /**
  2. * Parses input JSON to {@link JsonArray}, special case of parsing.
  3. */
  4. public JsonArray parseAsJsonArray(final String input) {
  5. return new JsonArray(parse(input));
  6. }

代码示例来源:origin: com.liferay.launchpad/api-client

  1. @Override
  2. public <T> T parse(String string) {
  3. return new JsonParser().parse(string);
  4. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testParseCatalogAsObjectWithClassname() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. String json = loadJSON("citm_catalog");
  5. Catalog catalog = jsonParser.setClassMetadataName("class").parse(json, Catalog.class);
  6. assertCatalog(catalog);
  7. });
  8. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testCustomMap() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. String json = "{\"userId\" : 123, \"name\": 456}";
  5. Map<String, Integer> map = jsonParser.parse(json);
  6. assertEquals(2, map.size());
  7. assertEquals(Integer.valueOf(123), map.get("userId"));
  8. assertEquals(Integer.valueOf(456), map.get("name"));
  9. Map<String, Long> map2 = JsonParser
  10. .create()
  11. .map(JsonParser.VALUES, Long.class)
  12. .parse(json);
  13. assertEquals(2, map2.size());
  14. assertEquals(Long.valueOf(123), map2.get("userId"));
  15. assertEquals(Long.valueOf(456), map2.get("name"));
  16. });
  17. JsonParsers.forEachParser(jsonParser -> {
  18. String json = "{\"123\" : \"hey\", \"456\": \"man\"}";
  19. Map<Long, String> map3 = jsonParser
  20. .map(JsonParser.KEYS, Long.class)
  21. .parse(json);
  22. assertEquals(2, map3.size());
  23. assertEquals("hey", map3.get(Long.valueOf(123)));
  24. assertEquals("man", map3.get(Long.valueOf(456)));
  25. });
  26. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testQuotes() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. try {
  5. assertEquals("ABC", jsonParser.parse("'ABC'"));
  6. fail("error");
  7. } catch (JsonException ignore) {
  8. }
  9. assertEquals("ABC", jsonParser.looseMode(true).parse("'ABC'"));
  10. assertEquals("AB'C", jsonParser.looseMode(true).parse("'AB\\'C'"));
  11. Map<String, Object> map = jsonParser.looseMode(true).parse("{'foo':'BAR'}");
  12. assertEquals(1, map.size());
  13. assertEquals("BAR", map.get("foo"));
  14. });
  15. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testParseCatalogAsMap() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. String json = loadJSON("citm_catalog");
  5. Map catalog = jsonParser
  6. .map("values.keys", Long.class)
  7. .map("venueNames.keys", String.class)
  8. .useAltPaths()
  9. .parse(json);
  10. String newJson = new JsonSerializer().deep(true).serialize(catalog);
  11. Catalog jsonCatalog = jsonParser.parse(newJson, Catalog.class);
  12. assertCatalog(jsonCatalog);
  13. });
  14. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testPointWithException() {
  3. JsonParser.Defaults.classMetadataName = "__class";
  4. JsonSerializer.Defaults.classMetadataName = "__class";
  5. JsonParsers.forEachParser(jsonParser -> {
  6. jsonParser.allowClass("notAllowed");
  7. final String json = new JsonSerializer().serialize(new Point2D.Float(1.0f, 2.0f));
  8. assertThrows(JsonException.class, () -> {
  9. jsonParser.parse(json);
  10. });
  11. jsonParser.allowAllClasses();
  12. });
  13. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testMergeInDepth2() {
  3. {
  4. JsonObject obj1 = new JsonObject(JsonParser.create().parse("{ \"foo\": \"bar\", \"flurb\": { \"eek\": \"foo\", \"bar\": \"flurb\"}}"));
  5. JsonObject obj2 = new JsonObject(JsonParser.create().parse("{ \"flurb\": { \"bar\": \"flurb1\" }}"));
  6. obj1.mergeIn(obj2, 2);
  7. assertEquals(2, obj1.size());
  8. assertEquals(2, obj1.getJsonObject("flurb").size());
  9. assertEquals("foo", obj1.getJsonObject("flurb").getString("eek"));
  10. assertEquals("flurb1", obj1.getJsonObject("flurb").getString("bar"));
  11. }
  12. {
  13. JsonObject obj1 = new JsonObject(JsonParser.createLazyOne().parse("{ \"foo\": \"bar\", \"flurb\": { \"eek\": \"foo\", \"bar\": \"flurb\"}}"));
  14. JsonObject obj2 = new JsonObject(JsonParser.createLazyOne().parse("{ \"flurb\": { \"bar\": \"flurb1\" }}"));
  15. obj1.mergeIn(obj2, 2);
  16. assertEquals(2, obj1.size());
  17. assertEquals(2, obj1.getJsonObject("flurb").size());
  18. assertEquals("foo", obj1.getJsonObject("flurb").getString("eek"));
  19. assertEquals("flurb1", obj1.getJsonObject("flurb").getString("bar"));
  20. }
  21. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testDeserializeInterfaces2() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. Hero superman = creator.createSuperman();
  5. String json = new JsonSerializer().include("powers").withClassMetadata(true).serialize(superman);
  6. Hero jsonSuperMan = jsonParser.withClassMetadata(true).parse(json, Hero.class);
  7. assertNotNull(jsonSuperMan);
  8. assertEquals(4, jsonSuperMan.getPowers().size());
  9. assertHeroHasSuperPowers(jsonSuperMan);
  10. });
  11. }

代码示例来源:origin: oblac/jodd

  1. /**
  2. * Static ctor.
  3. */
  4. public static JsonParser create() {
  5. return new JsonParser();
  6. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testMergeInDepth0() {
  3. {
  4. JsonObject obj1 = JsonParser.create().parseAsJsonObject("{ \"foo\": { \"bar\": \"flurb\" }}");
  5. JsonObject obj2 = JsonParser.create().parseAsJsonObject("{ \"foo\": { \"bar\": \"eek\" }}");
  6. obj1.mergeIn(obj2, 0);
  7. assertEquals(1, obj1.size());
  8. assertEquals(1, obj1.getJsonObject("foo").size());
  9. assertEquals("flurb", obj1.getJsonObject("foo").getString("bar"));
  10. }
  11. {
  12. JsonObject obj1 = JsonParser.createLazyOne().parseAsJsonObject("{ \"foo\": { \"bar\": \"flurb\" }}");
  13. JsonObject obj2 = JsonParser.createLazyOne().parseAsJsonObject("{ \"foo\": { \"bar\": \"eek\" }}");
  14. obj1.mergeIn(obj2, 0);
  15. assertEquals(1, obj1.size());
  16. assertEquals(1, obj1.getJsonObject("foo").size());
  17. assertEquals("flurb", obj1.getJsonObject("foo").getString("bar"));
  18. }
  19. }

代码示例来源:origin: oblac/jodd

  1. public static void forEachParser(final Consumer<JsonParser> jsonParserConsumer) {
  2. for (int i = 0; i < 2; i++) {
  3. final JsonParser jsonParser;
  4. switch (i) {
  5. case 0: jsonParser = JsonParser.create(); break;
  6. case 1: jsonParser = JsonParser.create().lazy(true); break;
  7. default:
  8. throw new IllegalArgumentException("Not good.");
  9. }
  10. jsonParserConsumer.accept(jsonParser);
  11. }
  12. }
  13. }

代码示例来源:origin: oblac/jodd

  1. /**
  2. * Parses input JSON to {@link JsonObject}, special case of {@link #parse(String, Class)}.
  3. */
  4. public JsonObject parseAsJsonObject(final String input) {
  5. return new JsonObject(parse(input));
  6. }

代码示例来源:origin: com.liferay.launchpad/serializer-json-jodd

  1. @Override
  2. public <T> T parse(String string, Class<T> type) {
  3. return new JsonParser().parse(string, type);
  4. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testMapWithEmbeddedObject() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. Map<String, Network> networks = jsonParser
  5. .setClassMetadataName("class")
  6. .parse("{\"1\": {\"class\":\"" + Network.class.getName() + "\", \"name\": \"Jodd\"} }");
  7. assertNotNull(networks);
  8. assertEquals(1, networks.size());
  9. assertTrue(networks.containsKey("1"));
  10. assertNotNull(networks.get("1"));
  11. assertEquals(Network.class, networks.get("1").getClass());
  12. assertEquals("Jodd", networks.get("1").getName());
  13. });
  14. }

代码示例来源:origin: oblac/jodd

  1. @Test
  2. void testUnquotes() {
  3. JsonParsers.forEachParser(jsonParser -> {
  4. Map<String, Object> map = jsonParser.looseMode(true).parse("{foo: BAR , who : me}");
  5. assertEquals(2, map.size());
  6. assertEquals("BAR", map.get("foo"));
  7. assertEquals("me", map.get("who"));
  8. try {
  9. jsonParser.looseMode(true).parse("{foo: BAR , who : m\te}");
  10. fail("error");
  11. } catch (JsonException ignore) {
  12. }
  13. });
  14. }

相关文章