List of usage examples for com.fasterxml.jackson.databind ObjectMapper treeToValue
@SuppressWarnings("unchecked") @Override public <T> T treeToValue(TreeNode n, Class<T> valueType) throws JsonProcessingException
From source file:com.basistech.rosette.dm.json.plain.JsonTest.java
@Test public void testForwardCompatibilityNoisy() throws Exception { ObjectMapper mapper = objectMapper(); JsonNode tree = mapper.valueToTree(referenceTextOldEntities); ObjectNode attributes = (ObjectNode) tree.get("attributes"); ObjectNode extendedObject = attributes.putObject("novelty"); extendedObject.put("type", "novelty"); extendedObject.put("startOffset", 4); extendedObject.put("endOffset", 8); extendedObject.put("color", "pari"); AnnotatedText read = mapper.treeToValue(tree, AnnotatedText.class); BaseAttribute novelty = read.getAttributes().get("novelty"); assertNotNull(novelty);// ww w .j ava 2 s.co m assertEquals(4, novelty.getExtendedProperties().get("startOffset")); assertEquals(8, novelty.getExtendedProperties().get("endOffset")); assertEquals("pari", novelty.getExtendedProperties().get("color")); }
From source file:com.basistech.rosette.dm.json.plain.JsonTest.java
@Test public void testForwardCompatibilitySimple() throws Exception { ObjectMapper mapper = objectMapper(); AnnotatedText.Builder builder = new AnnotatedText.Builder(); builder.data(THIS_IS_THE_TERRIER_SHOT_TO_BOSTON); AnnotatedText simpleText = builder.build(); JsonNode tree = mapper.valueToTree(simpleText); ObjectNode attributes = (ObjectNode) tree.get("attributes"); ObjectNode extendedObject = attributes.putObject("novelty"); extendedObject.put("type", "novelty"); extendedObject.put("startOffset", 4); extendedObject.put("endOffset", 8); extendedObject.put("color", "pari"); AnnotatedText read = mapper.treeToValue(tree, AnnotatedText.class); BaseAttribute novelty = read.getAttributes().get("novelty"); assertNotNull(novelty);/* w w w .j a v a 2s . com*/ assertEquals(4, novelty.getExtendedProperties().get("startOffset")); assertEquals(8, novelty.getExtendedProperties().get("endOffset")); assertEquals("pari", novelty.getExtendedProperties().get("color")); }
From source file:com.basistech.rosette.dm.json.plain.JsonTest.java
@Test @SuppressWarnings("unchecked") public void testForwardCompatibilityList() throws Exception { ObjectMapper mapper = objectMapper(); AnnotatedText.Builder builder = new AnnotatedText.Builder(); builder.data(THIS_IS_THE_TERRIER_SHOT_TO_BOSTON); AnnotatedText simpleText = builder.build(); JsonNode tree = mapper.valueToTree(simpleText); ObjectNode attributes = (ObjectNode) tree.get("attributes"); ObjectNode extendedObject = attributes.putObject("novelty"); extendedObject.put("type", "list"); extendedObject.put("itemType", "noveltyItem"); ArrayNode items = extendedObject.putArray("items"); ObjectNode item0 = items.addObject(); item0.put("startOffset", 4); item0.put("endOffset", 8); item0.put("color", "pari"); ObjectNode item1 = items.addObject(); item1.put("startOffset", 10); item1.put("endOffset", 12); item1.put("color", "off"); AnnotatedText read = mapper.treeToValue(tree, AnnotatedText.class); ListAttribute<BaseAttribute> novelty = (ListAttribute<BaseAttribute>) read.getAttributes().get("novelty"); assertNotNull(novelty);/*from www . j a va 2 s .com*/ assertEquals(2, novelty.size()); BaseAttribute item = novelty.get(0); assertEquals(4, item.getExtendedProperties().get("startOffset")); assertEquals(8, item.getExtendedProperties().get("endOffset")); assertEquals("pari", item.getExtendedProperties().get("color")); item = novelty.get(1); assertEquals(10, item.getExtendedProperties().get("startOffset")); assertEquals(12, item.getExtendedProperties().get("endOffset")); assertEquals("off", item.getExtendedProperties().get("color")); }
From source file:com.spankingrpgs.model.GameState.java
/** * Loads the data encoded in the passed in JSON into this state. * * @param stateToLoad The JSON string to load into this state *//*from w w w . j ava 2 s . c o m*/ @SuppressWarnings("unchecked") public void load(String stateToLoad) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode; try { rootNode = mapper.readValue(stateToLoad, JsonNode.class); } catch (IOException e) { throw new RuntimeException(e); } loadPlayerCharacter(rootNode.get("playerCharacter")); loadKeywords(rootNode.get("keywords")); setNumTimesLost(rootNode.get("numTimesLost").asInt()); setEpisodeNumber(rootNode.get("episodeNumber").asInt()); setDayNumber(rootNode.get("dayNumber").asInt()); setActivityLength(rootNode.get("activityLength").asInt()); setAttritionRate(AttritionRate.valueOf(rootNode.get("attritionRate").asText())); setArtificialIntelligenceLevel( ArtificialIntelligenceLevel.valueOf(rootNode.get("artificialIntelligenceLevel").asText())); setPlayerSpankable(rootNode.get("playerSpankable").asBoolean()); setSpankerGender(Gender.valueOf(rootNode.get("spankerGender").asText())); setSpankeeGender(Gender.valueOf(rootNode.get("spankeeGender").asText())); setMusic(rootNode.get("music") == null ? null : rootNode.get("music").asText()); Options.setGenderForRole(SpankingRole.SPANKER, getSpankerGender()); Options.setGenderForRole(SpankingRole.SPANKEE, getSpankeeGender()); loadPreviousVillains(rootNode.get("previousVillains")); loadCurrentEvent(rootNode.get("currentEventName")); loadParty(rootNode.get("party")); loadCharacterGender(rootNode.get("characterGender")); try { setCurrentEventText((List<String>) mapper.treeToValue(rootNode.get("currentEventText"), List.class)); setGameTime(mapper.treeToValue(rootNode.get("gameTime"), Calendar.class)); } catch (JsonProcessingException e) { String msg = String.format("Experienced an error while loading node %s: %s", rootNode.get("gameTime").toString(), e); LOG.log(Level.SEVERE, msg); throw new RuntimeException(msg, e); } }
From source file:io.coala.json.DynaBean.java
/** * @param referenceType//from ww w.j a va 2s. c o m * @param <S> * @param <T> * @return */ static final <S, T> JsonDeserializer<T> createJsonDeserializer(final ObjectMapper om, final Class<T> resultType, final Properties... imports) { return new JsonDeserializer<T>() { @Override public T deserializeWithType(final JsonParser jp, final DeserializationContext ctxt, final TypeDeserializer typeDeserializer) throws IOException, JsonProcessingException { return deserialize(jp, ctxt); } @Override public T deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { if (jp.getCurrentToken() == JsonToken.VALUE_NULL) return null; // if( Wrapper.class.isAssignableFrom( resultType ) ) // { // // FIXME // LOG.trace( "deser wrapper intf of {}", jp.getText() ); // return (T) Wrapper.Util.valueOf( jp.getText(), // resultType.asSubclass( Wrapper.class ) ); // } if (Config.class.isAssignableFrom(resultType)) { final Map<String, Object> entries = jp.readValueAs(new TypeReference<Map<String, Object>>() { }); final Iterator<Entry<String, Object>> it = entries.entrySet().iterator(); for (Entry<String, Object> next = null; it.hasNext(); next = it.next()) if (next != null && next.getValue() == null) { LOG.trace("Ignoring null value: {}", next); it.remove(); } return resultType.cast(ConfigFactory.create(resultType.asSubclass(Config.class), entries)); } // else if (Config.class.isAssignableFrom(resultType)) // throw new JsonGenerationException( // "Config does not extend "+Mutable.class.getName()+" required for deserialization: " // + Arrays.asList(resultType // .getInterfaces())); // can't parse directly to interface type final DynaBean bean = new DynaBean(); final TreeNode tree = jp.readValueAsTree(); // override attributes as defined in interface getters final Set<String> attributes = new HashSet<>(); for (Method method : resultType.getMethods()) { if (method.getReturnType().equals(Void.TYPE) || method.getParameterTypes().length != 0) continue; final String attribute = method.getName(); if (attribute.equals("toString") || attribute.equals("hashCode")) continue; attributes.add(attribute); final TreeNode value = tree.get(attribute);// bean.any().get(attributeName); if (value == null) continue; bean.set(method.getName(), om.treeToValue(value, JsonUtil.checkRegistered(om, method.getReturnType(), imports))); } if (tree.isObject()) { // keep superfluous properties as TreeNodes, just in case final Iterator<String> fieldNames = tree.fieldNames(); while (fieldNames.hasNext()) { final String fieldName = fieldNames.next(); if (!attributes.contains(fieldName)) bean.set(fieldName, tree.get(fieldName)); } } else if (tree.isValueNode()) { for (Class<?> type : resultType.getInterfaces()) for (Method method : type.getDeclaredMethods()) { // LOG.trace( "Scanning {}", method ); if (method.isAnnotationPresent(JsonProperty.class)) { final String property = method.getAnnotation(JsonProperty.class).value(); // LOG.trace( "Setting {}: {}", property, // ((ValueNode) tree).textValue() ); bean.set(property, ((ValueNode) tree).textValue()); } } } else throw ExceptionFactory.createUnchecked("Expected {} but parsed: {}", resultType, tree.getClass()); return DynaBean.proxyOf(om, resultType, bean, imports); } }; }