Example usage for com.fasterxml.jackson.core JsonGenerator writeTree

List of usage examples for com.fasterxml.jackson.core JsonGenerator writeTree

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonGenerator writeTree.

Prototype

public abstract void writeTree(TreeNode rootNode) throws IOException, JsonProcessingException;

Source Link

Document

Method for writing given JSON tree (expressed as a tree where given JsonNode is the root) using this generator.

Usage

From source file:org.soulwing.prospecto.jackson.ViewSerializer.java

@Override
public void serialize(View view, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
        throws IOException {

    final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    writerFactory.newWriter(view, outputStream).writeView();

    final ObjectMapper mapper = new ObjectMapper();
    final ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());

    jsonGenerator.writeTree(mapper.readTree(inputStream));
}

From source file:scott.barleyrs.rest.QueryResultMessageBodyWriter.java

@Override
public void writeTo(QueryResult<?> result, Class<?> type, Type genericType, Annotation[] annotations,
        MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
        throws IOException, WebApplicationException {
    System.out.println("converting QueryResult to JSON");
    result.getEntityContext().setEntityContextState(EntityContextState.INTERNAL);
    try {//from w ww  .  j  a v a2 s. c om
        ObjectMapper mapper = new ObjectMapper();
        JsonGenerator gen = mapper.getFactory().createGenerator(entityStream);
        ArrayNode array = mapper.createArrayNode();
        for (Entity entity : result.getEntityList()) {
            Set<Entity> started = new HashSet<>();
            array.add(toJson(mapper, entity, started));

        }
        gen.writeTree(array);
    } finally {
        result.getEntityContext().setEntityContextState(EntityContextState.USER);
    }

}

From source file:org.kitesdk.apps.scheduled.Schedule.java

public String toString() {

    StringWriter writer = new StringWriter();

    try {//from w  w  w  .ja va2s.c  om

        JsonGenerator gen = new JsonFactory().createGenerator(writer);
        gen.setCodec(new ObjectMapper());
        gen.writeTree(toJson());

        gen.close();
    } catch (IOException e) {
        // An IOException should not be possible against a local buffer.
        throw new AssertionError(e);
    }

    return writer.toString();
}

From source file:com.github.jonpeterson.jackson.module.interceptor.JsonInterceptingSerializer.java

@Override
public void serialize(T value, JsonGenerator generator, SerializerProvider provider) throws IOException {
    // serialize the value into a byte array buffer then parse it back out into a JsonNode tree
    // TODO: find a better way to convert the value into a tree
    JsonFactory factory = generator.getCodec().getFactory();
    ByteArrayOutputStream buffer = new ByteArrayOutputStream(4096);
    JsonGenerator bufferGenerator = factory.createGenerator(buffer);
    try {//  w w w  . java2s.  c om
        delegate.serialize(value, bufferGenerator, provider);
    } finally {
        bufferGenerator.close();
    }
    JsonNode jsonNode = factory.createParser(buffer.toByteArray()).readValueAsTree();

    // execute interceptors on node
    for (JsonInterceptor interceptor : interceptors)
        jsonNode = interceptor.intercept(jsonNode, jsonNodeFactory);

    // write node
    generator.writeTree(jsonNode);
}

From source file:com.github.jonpeterson.jackson.module.versioning.VersionedModelSerializer.java

private void doSerialize(T value, JsonGenerator generator, SerializerProvider provider,
        TypeSerializer typeSerializer) throws IOException {
    // serialize the value into a byte array buffer then parse it back out into a JsonNode tree
    // TODO: find a better way to convert the value into a tree
    JsonFactory factory = generator.getCodec().getFactory();
    ByteArrayOutputStream buffer = new ByteArrayOutputStream(4096);
    JsonGenerator bufferGenerator = factory.createGenerator(buffer);
    try {/*from ww w .  ja  va  2s  . com*/
        if (typeSerializer != null)
            delegate.serializeWithType(value, bufferGenerator, provider, typeSerializer);
        else
            delegate.serialize(value, bufferGenerator, provider);
    } finally {
        bufferGenerator.close();
    }

    ObjectNode modelData = factory.createParser(buffer.toByteArray()).readValueAsTree();

    // set target version to @SerializeToVersion's value, @JsonVersionModel's defaultSerializeToVersion, or
    //   @JsonVersionModel's currentVersion in that order
    String targetVersion = null;
    if (serializeToVersionProperty != null) {
        targetVersion = (String) serializeToVersionProperty.getAccessor().getValue(value);
        modelData.remove(serializeToVersionProperty.getName());
    }
    if (targetVersion == null)
        targetVersion = jsonVersionedModel.defaultSerializeToVersion();
    if (targetVersion.isEmpty())
        targetVersion = jsonVersionedModel.currentVersion();

    // convert model data if there is a converter and targetVersion is different than the currentVersion or if
    //   alwaysConvert is true
    if (converter != null && (jsonVersionedModel.alwaysConvert()
            || !targetVersion.equals(jsonVersionedModel.currentVersion())))
        modelData = converter.convert(modelData, jsonVersionedModel.currentVersion(), targetVersion,
                JsonNodeFactory.instance);

    // add target version to model data if it wasn't the version to suppress
    if (!targetVersion.equals(jsonVersionedModel.versionToSuppressPropertySerialization()))
        modelData.put(jsonVersionedModel.propertyName(), targetVersion);

    // write node
    generator.writeTree(modelData);
}

From source file:com.microsoft.rest.serializer.FlatteningSerializer.java

@Override
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
    if (value == null) {
        jgen.writeNull();/*  w  w w  . j a  v a2s . c o m*/
        return;
    }

    // BFS for all collapsed properties
    ObjectNode root = mapper.valueToTree(value);
    ObjectNode res = root.deepCopy();
    Queue<ObjectNode> source = new LinkedBlockingQueue<ObjectNode>();
    Queue<ObjectNode> target = new LinkedBlockingQueue<ObjectNode>();
    source.add(root);
    target.add(res);
    while (!source.isEmpty()) {
        ObjectNode current = source.poll();
        ObjectNode resCurrent = target.poll();
        Iterator<Map.Entry<String, JsonNode>> fields = current.fields();
        while (fields.hasNext()) {
            Map.Entry<String, JsonNode> field = fields.next();
            ObjectNode node = resCurrent;
            String key = field.getKey();
            JsonNode outNode = resCurrent.get(key);
            if (field.getKey().matches(".+[^\\\\]\\..+")) {
                String[] values = field.getKey().split("((?<!\\\\))\\.");
                for (int i = 0; i < values.length; ++i) {
                    values[i] = values[i].replace("\\.", ".");
                    if (i == values.length - 1) {
                        break;
                    }
                    String val = values[i];
                    if (node.has(val)) {
                        node = (ObjectNode) node.get(val);
                    } else {
                        ObjectNode child = new ObjectNode(JsonNodeFactory.instance);
                        node.put(val, child);
                        node = child;
                    }
                }
                node.set(values[values.length - 1], resCurrent.get(field.getKey()));
                resCurrent.remove(field.getKey());
                outNode = node.get(values[values.length - 1]);
            }
            if (field.getValue() instanceof ObjectNode) {
                source.add((ObjectNode) field.getValue());
                target.add((ObjectNode) outNode);
            } else if (field.getValue() instanceof ArrayNode && (field.getValue()).size() > 0
                    && (field.getValue()).get(0) instanceof ObjectNode) {
                Iterator<JsonNode> sourceIt = field.getValue().elements();
                Iterator<JsonNode> targetIt = outNode.elements();
                while (sourceIt.hasNext()) {
                    source.add((ObjectNode) sourceIt.next());
                    target.add((ObjectNode) targetIt.next());
                }
            }
        }
    }
    jgen.writeTree(res);
}

From source file:org.fao.geonet.domain.SettingToObjectSerializer.java

public static void writeSettingValue(Setting s, JsonGenerator jsonGenerator) throws IOException {
    try {/*from w  ww.ja v a  2s  .  c om*/
        if (StringUtils.isNotEmpty(s.getValue())) {
            if (s.getDataType() == SettingDataType.BOOLEAN) {
                jsonGenerator.writeBoolean(Boolean.parseBoolean(s.getValue()));
            } else if (s.getDataType() == SettingDataType.INT) {
                jsonGenerator.writeNumber(Integer.parseInt(s.getValue()));
            } else if (s.getDataType() == SettingDataType.JSON) {
                ObjectMapper mapper = new ObjectMapper();
                jsonGenerator.writeTree(mapper.readTree(s.getValue()));
            } else {
                jsonGenerator.writeString(s.getValue());
            }
        } else {
            jsonGenerator.writeNull();
        }
    } catch (Exception e) {
        jsonGenerator.writeNull();
        jsonGenerator.writeStringField("erroneousValue", s.getValue());
        jsonGenerator.writeStringField("error", e.getMessage());
    }
}

From source file:org.sead.repositories.reference.RefRepository.java

protected static void generateIndex(InputStream ro, File descFile, File indexFile)
        throws JsonParseException, IOException {

    log.debug("Generating desc and index files");
    JsonFactory f = new MappingJsonFactory(); // reading
    JsonParser jp = f.createParser(ro);/*from   w w  w . ja  v  a 2s . c o m*/

    JsonGenerator generator = new JsonFactory().createGenerator(descFile, JsonEncoding.UTF8);

    JsonToken current;

    current = jp.nextToken();

    report(jp, current);
    while ((current = jp.nextToken()) != null) {
        if (current.equals(JsonToken.FIELD_NAME)) {
            String fName = jp.getText();
            if (fName.equals("describes")) {
                log.trace("describes");
                while (((current = jp.nextToken()) != null)) {
                    if (jp.isExpectedStartObjectToken()) {
                        generator.setCodec(new ObjectMapper());
                        generator.useDefaultPrettyPrinter();

                        generator.writeStartObject();

                        while (((current = jp.nextToken()) != JsonToken.END_OBJECT)) {
                            if (current != JsonToken.FIELD_NAME) {
                                log.warn("Unexpected Token!");
                                report(jp, current);

                            } else {
                                report(jp, current);
                                String name = jp.getText();
                                current = jp.nextToken(); // Get to start of
                                // value
                                if (!name.equals("aggregates")) {
                                    log.trace("Writing: " + name);
                                    generator.writeFieldName(name);
                                    generator.writeTree(jp.readValueAsTree());
                                } else {
                                    report(jp, current);
                                    log.trace("Skipping?");
                                    if (current.isStructStart()) {
                                        indexChildren(indexFile, jp);
                                        // jp.skipChildren();
                                    } else {
                                        log.warn("Was Not Struct start!");
                                    }
                                    log.trace("Hit aggregates");

                                }
                            }
                        }

                        generator.writeEndObject();

                        generator.close();
                    }
                }
            }
        }
    }
}