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

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

Introduction

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

Prototype

public abstract void writeStartArray() throws IOException, JsonGenerationException;

Source Link

Document

Method for writing starting marker of a JSON Array value (character '['; plus possible white space decoration if pretty-printing is enabled).

Usage

From source file:org.bedework.carddav.vcard.Card.java

/**
 * @param indent true for pretty//ww  w.ja  v a  2  s.c o  m
 * @param version V4 or V3
 * @return String json value
 * @throws WebdavException
 */
public String outputJson(final boolean indent, final String version) throws WebdavException {
    if (jsonStrForm != null) {
        return jsonStrForm;
    }

    final StringWriter sw = new StringWriter();

    try {
        final JsonGenerator jgen = jsonFactory.createJsonGenerator(sw);

        if (indent) {
            jgen.useDefaultPrettyPrinter();
        }

        jgen.writeStartArray(); // for vcard

        jgen.writeString("vcard");
        jgen.writeStartArray(); // Array of properties

        /* Version should come before anything else. */
        boolean version4 = false;

        if (version != null) {
            version4 = version.equals("4.0");
        } else {
            final Version v = (Version) vcard.getProperty(Property.Id.VERSION);

            if (v != null) {
                version4 = v.equals(Version.VERSION_4_0);
            }
        }

        final Property pversion;

        if (version4) {
            pversion = Version.VERSION_4_0;
        } else {
            pversion = new Version("3.0");
        }

        JsonProperty.addFields(jgen, pversion);

        final Set<String> pnames = VcardDefs.getPropertyNames();

        /* Output known properties first */

        for (final String pname : pnames) {
            if ("VERSION".equals(pname)) {
                continue;
            }

            final List<Property> props = findProperties(pname);

            if (!props.isEmpty()) {
                for (final Property p : props) {
                    JsonProperty.addFields(jgen, p);
                }
            }
        }

        /* Now output any extra unknown properties */

        final List<Property> props = vcard.getProperties();

        if (props != null) {
            for (final Property p : props) {
                if (!pnames.contains(p.getId().toString())) {
                    JsonProperty.addFields(jgen, p);
                }
            }
        }

        jgen.writeEndArray(); // End event properties

        jgen.writeEndArray(); // for vcard

        jgen.flush();
    } catch (final WebdavException wde) {
        throw wde;
    } catch (final Throwable t) {
        throw new WebdavException(t);
    }

    jsonStrForm = sw.toString();

    return jsonStrForm;
}

From source file:net.opentsdb.tsd.HttpSampleSerializer.java

/**
 * Format the results from a timeseries data query
 * @param data_query The TSQuery object used to fetch the results
 * @param results The data fetched from storage
 * @param globals An optional list of global annotation objects
 * @return A ChannelBuffer object to pass on to the caller
 *///from   ww  w. j  av a  2 s .com
public ChannelBuffer formatQueryV1(final TSQuery data_query, final List<DataPoints[]> results,
        final List<Annotation> globals) {

    final boolean as_arrays = this.query.hasQueryStringParam("arrays");
    final String jsonp = this.query.getQueryStringParam("jsonp");

    // todo - this should be streamed at some point since it could be HUGE
    final ChannelBuffer response = ChannelBuffers.dynamicBuffer();
    final OutputStream output = new ChannelBufferOutputStream(response);
    try {
        // don't forget jsonp
        if (jsonp != null && !jsonp.isEmpty()) {
            output.write((jsonp + "(").getBytes(query.getCharset()));
        }
        JsonGenerator json = JSON.getFactory().createGenerator(output);
        json.writeStartArray();

        for (DataPoints[] separate_dps : results) {
            for (DataPoints dps : separate_dps) {
                json.writeStartObject();

                json.writeStringField("metric", dps.metricName());

                json.writeFieldName("tags");
                json.writeStartObject();
                if (dps.getTags() != null) {
                    for (Map.Entry<String, String> tag : dps.getTags().entrySet()) {
                        json.writeStringField(tag.getKey(), tag.getValue());
                    }
                }
                json.writeEndObject();

                json.writeFieldName("aggregateTags");
                json.writeStartArray();
                if (dps.getAggregatedTags() != null) {
                    for (String atag : dps.getAggregatedTags()) {
                        json.writeString(atag);
                    }
                }
                json.writeEndArray();

                if (data_query.getShowTSUIDs()) {
                    json.writeFieldName("tsuids");
                    json.writeStartArray();
                    final List<String> tsuids = dps.getTSUIDs();
                    Collections.sort(tsuids);
                    for (String tsuid : tsuids) {
                        json.writeString(tsuid);
                    }
                    json.writeEndArray();
                }

                if (!data_query.getNoAnnotations()) {
                    final List<Annotation> annotations = dps.getAnnotations();
                    if (annotations != null) {
                        Collections.sort(annotations);
                        json.writeArrayFieldStart("annotations");
                        for (Annotation note : annotations) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }

                    if (globals != null && !globals.isEmpty()) {
                        Collections.sort(globals);
                        json.writeArrayFieldStart("globalAnnotations");
                        for (Annotation note : globals) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }
                }

                // now the fun stuff, dump the data
                json.writeFieldName("dps");

                // default is to write a map, otherwise write arrays
                if (as_arrays) {
                    json.writeStartArray();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < data_query.startTime() || dp.timestamp() > data_query.endTime()) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        json.writeStartArray();
                        json.writeNumber(timestamp);
                        json.writeNumber(dp.isInteger() ? dp.longValue() : dp.doubleValue());
                        json.writeEndArray();
                    }
                    json.writeEndArray();
                } else {
                    json.writeStartObject();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < (data_query.startTime())
                                || dp.timestamp() > (data_query.endTime())) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        json.writeNumberField(Long.toString(timestamp),
                                dp.isInteger() ? dp.longValue() : dp.doubleValue());
                    }
                    json.writeEndObject();
                }

                // close the results for this particular query
                json.writeEndObject();
            }
        }

        // close
        json.writeEndArray();
        json.close();

        if (jsonp != null && !jsonp.isEmpty()) {
            output.write(")".getBytes());
        }
        return response;
    } catch (IOException e) {
        LOG.error("Unexpected exception", e);
        throw new RuntimeException(e);
    }
}

From source file:org.neo4j.ontology.server.unmanaged.AnnotationResource.java

private void writeJsonNodeObject(JsonGenerator jg, Node term, Label annotationLabel, List<Long> dataSetsId)
        throws IOException {
    jg.writeStartObject(); // {
    jg.writeStringField("uri", term.getProperty("uri").toString()); // uri: "http://www.w3.org/2002/07/owl#Thing"
    jg.writeStringField("ontId", term.getProperty("name").toString()); // ontId: "OWL:Thing"
    jg.writeStringField("label", term.getProperty("rdfs:label", term.getProperty("name")).toString()); // ontId: "OWL:Thing"
    jg.writeFieldName("dataSets"); // dataSets:
    jg.writeStartArray(); // [
    for (Long dataSetId : dataSetsId) {
        jg.writeNumber(dataSetId); // 123
    }/* w ww. j ava2 s .  c om*/
    jg.writeEndArray(); // ]
    writeJsonNodeObjectParents(jg, term, annotationLabel);
    jg.writeEndObject(); // }
}

From source file:gov.bnl.channelfinder.TagsResource.java

/**
 * GET method for retrieving the list of tags in the database.
 *
 * @return list of tags/* w  ww  . j a va  2s. c o m*/
 */
@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response list() {
    Client client = getNewClient();
    String user = securityContext.getUserPrincipal() != null ? securityContext.getUserPrincipal().getName()
            : "";
    final ObjectMapper mapper = new ObjectMapper();
    mapper.addMixIn(XmlTag.class, OnlyXmlTag.class);
    try {
        MultivaluedMap<String, String> parameters = uriInfo.getQueryParameters();
        int size = 10000;
        if (parameters.containsKey("~size")) {
            Optional<String> maxSize = parameters.get("~size").stream().max((o1, o2) -> {
                return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
            });
            if (maxSize.isPresent()) {
                size = Integer.valueOf(maxSize.get());
            }

        }
        final SearchResponse response = client.prepareSearch("tags").setTypes("tag")
                .setQuery(new MatchAllQueryBuilder()).setSize(size).execute().actionGet();
        StreamingOutput stream = new StreamingOutput() {
            @Override
            public void write(OutputStream os) throws IOException, WebApplicationException {
                JsonGenerator jg = mapper.getFactory().createGenerator(os, JsonEncoding.UTF8);
                jg.writeStartArray();
                if (response != null) {
                    for (SearchHit hit : response.getHits()) {
                        jg.writeObject(mapper.readValue(hit.source(), XmlTag.class));
                    }
                }
                jg.writeEndArray();
                jg.flush();
                jg.close();
            }
        };
        Response r = Response.ok(stream).build();
        log.fine(user + "|" + uriInfo.getPath() + "|GET|OK|" + r.getStatus() + response.getTook() + "|returns "
                + response.getHits().getTotalHits() + " tags");
        return r;
    } catch (Exception e) {
        return handleException(user, Response.Status.INTERNAL_SERVER_ERROR, e);
    } finally {
        client.close();
    }
}

From source file:com.spotify.apollo.meta.TypesafeConfigSerializer.java

@Override
public void serialize(ConfigValue value, JsonGenerator jgen, SerializerProvider provider) throws IOException {

    if (value.valueType() == ConfigValueType.OBJECT) {
        final ConfigObject object = (ConfigObject) value;

        jgen.writeStartObject();/* ww w. j a  v  a2 s  .c o  m*/
        for (Map.Entry<String, ConfigValue> valueEntry : object.entrySet()) {
            if (withOrigins) {
                final ConfigOrigin origin = valueEntry.getValue().origin();
                jgen.writeStringField(valueEntry.getKey() + "__origin",
                        origin.description() + (origin.filename() != null ? ", " + origin.filename() : ""));
            }
            jgen.writeObjectField(valueEntry.getKey(), valueEntry.getValue());
        }
        jgen.writeEndObject();
    } else if (value.valueType() == ConfigValueType.LIST) {
        final ConfigList list = (ConfigList) value;

        jgen.writeStartArray();
        for (ConfigValue configValue : list) {
            jgen.writeObject(configValue);
        }
        jgen.writeEndArray();
    } else {
        jgen.writeObject(value.unwrapped());
    }
}

From source file:com.castlemock.web.mock.rest.converter.swagger.SwaggerRestDefinitionConverter.java

/**
 * Method used to generate a response body based on a {@link Model} and perhaps related other {@link Model}.
 * @param model The {@link Model} used to generate to the body.
 * @param definitions Other {@link Model} that might be related and required.
 * @param generator generator The {@link JsonGenerator}.
 * @throws IOException//from   w ww  .  ja v a 2 s . co m
 * @since 1.13
 * @see {@link #generateJsonBody(String, Property, Map, JsonGenerator)}
 */
private void generateJsonBody(final Model model, final Map<String, Model> definitions,
        final JsonGenerator generator) throws IOException {
    generator.writeStartObject();
    if (model instanceof ArrayModel) {
        final ArrayModel arrayModel = (ArrayModel) model;
        final Property item = arrayModel.getItems();
        final int maxItems = getMaxItems(arrayModel.getMaxItems());
        generator.writeStartArray();
        for (int index = 0; index < maxItems; index++) {
            generateJsonBody(item.getName(), item, definitions, generator);
        }
        generator.writeEndArray();
    } else if (model instanceof RefModel) {
        final RefModel refModel = (RefModel) model;
        final String simpleRef = refModel.getSimpleRef();
        final Model subModel = definitions.get(simpleRef);
        generateJsonBody(subModel, definitions, generator);
    }

    if (model.getProperties() != null) {
        for (Map.Entry<String, Property> property : model.getProperties().entrySet()) {
            generateJsonBody(property.getKey(), property.getValue(), definitions, generator);
        }
    }

    generator.writeEndObject();
}

From source file:net.opentsdb.tsd.HttpJsonSerializer.java

/**
 * Format the results from a timeseries data query
 * @param data_query The TSQuery object used to fetch the results
 * @param results The data fetched from storage
 * @param globals An optional list of global annotation objects
 * @return A ChannelBuffer object to pass on to the caller
 *//*from  ww  w  . j a  va  2 s. co  m*/
public ChannelBuffer formatQueryV1(final TSQuery data_query, final List<DataPoints[]> results,
        final List<Annotation> globals) {

    final boolean as_arrays = this.query.hasQueryStringParam("arrays");
    final String jsonp = this.query.getQueryStringParam("jsonp");

    // todo - this should be streamed at some point since it could be HUGE
    final ChannelBuffer response = ChannelBuffers.dynamicBuffer();
    final OutputStream output = new ChannelBufferOutputStream(response);
    try {
        // don't forget jsonp
        if (jsonp != null && !jsonp.isEmpty()) {
            output.write((jsonp + "(").getBytes(query.getCharset()));
        }
        JsonGenerator json = JSON.getFactory().createGenerator(output);
        json.writeStartArray();

        for (DataPoints[] separate_dps : results) {
            for (DataPoints dps : separate_dps) {
                json.writeStartObject();

                json.writeStringField("metric", dps.metricName());

                json.writeFieldName("tags");
                json.writeStartObject();
                if (dps.getTags() != null) {
                    for (Map.Entry<String, String> tag : dps.getTags().entrySet()) {
                        json.writeStringField(tag.getKey(), tag.getValue());
                    }
                }
                json.writeEndObject();

                json.writeFieldName("aggregateTags");
                json.writeStartArray();
                if (dps.getAggregatedTags() != null) {
                    for (String atag : dps.getAggregatedTags()) {
                        json.writeString(atag);
                    }
                }
                json.writeEndArray();

                if (data_query.getShowTSUIDs()) {
                    json.writeFieldName("tsuids");
                    json.writeStartArray();
                    final List<String> tsuids = dps.getTSUIDs();
                    Collections.sort(tsuids);
                    for (String tsuid : tsuids) {
                        json.writeString(tsuid);
                    }
                    json.writeEndArray();
                }

                if (!data_query.getNoAnnotations()) {
                    final List<Annotation> annotations = dps.getAnnotations();
                    if (annotations != null) {
                        Collections.sort(annotations);
                        json.writeArrayFieldStart("annotations");
                        for (Annotation note : annotations) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }

                    if (globals != null && !globals.isEmpty()) {
                        Collections.sort(globals);
                        json.writeArrayFieldStart("globalAnnotations");
                        for (Annotation note : globals) {
                            json.writeObject(note);
                        }
                        json.writeEndArray();
                    }
                }

                // now the fun stuff, dump the data
                json.writeFieldName("dps");

                // default is to write a map, otherwise write arrays
                if (as_arrays) {
                    json.writeStartArray();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < data_query.startTime() || dp.timestamp() > data_query.endTime()) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        json.writeStartArray();
                        json.writeNumber(timestamp);
                        if (dp.isInteger()) {
                            json.writeNumber(dp.longValue());
                        } else {
                            json.writeNumber(dp.doubleValue());
                        }
                        json.writeEndArray();
                    }
                    json.writeEndArray();
                } else {
                    json.writeStartObject();
                    for (final DataPoint dp : dps) {
                        if (dp.timestamp() < (data_query.startTime())
                                || dp.timestamp() > (data_query.endTime())) {
                            continue;
                        }
                        final long timestamp = data_query.getMsResolution() ? dp.timestamp()
                                : dp.timestamp() / 1000;
                        if (dp.isInteger()) {
                            json.writeNumberField(Long.toString(timestamp), dp.longValue());
                        } else {
                            json.writeNumberField(Long.toString(timestamp), dp.doubleValue());
                        }
                    }
                    json.writeEndObject();
                }

                // close the results for this particular query
                json.writeEndObject();
            }
        }

        // close
        json.writeEndArray();
        json.close();

        if (jsonp != null && !jsonp.isEmpty()) {
            output.write(")".getBytes());
        }
        return response;
    } catch (IOException e) {
        LOG.error("Unexpected exception", e);
        throw new RuntimeException(e);
    }
}

From source file:org.talend.dataprep.schema.xls.serialization.XlsRunnable.java

/**
 * @see Runnable#run()/*  ww  w  . j  a v a2 s  . c  o m*/
 */
@Override
public void run() {
    try {

        Workbook workbook = WorkbookFactory.create(rawContent);

        JsonGenerator generator = jsonFactory.createGenerator(jsonOutput);

        // if no sheet name just get the first one (take it easy mate :-) )
        Sheet sheet = isEmpty(metadata.getSheetName()) ? workbook.getSheetAt(0)
                : workbook.getSheet(metadata.getSheetName());

        if (sheet == null) {
            // auto generated sheet name so take care!! "sheet-" + i
            if (StringUtils.startsWith(metadata.getSheetName(), "sheet-")) {
                String sheetNumberStr = StringUtils.removeStart(metadata.getSheetName(), "sheet-");

                sheet = workbook.getSheetAt(Integer.valueOf(sheetNumberStr));
            }
            // still null so use the first one
            if (sheet == null) {
                sheet = workbook.getSheetAt(0);
            }
        }

        generator.writeStartArray();
        List<ColumnMetadata> columns = metadata.getRowMetadata().getColumns();

        serializeColumns(workbook, generator, sheet, columns);

        generator.writeEndArray();
        generator.flush();
    } catch (Exception e) {
        // Consumer may very well interrupt consumption of stream (in case of limit(n) use for sampling).
        // This is not an issue as consumer is allowed to partially consumes results, it's up to the
        // consumer to ensure data it consumed is consistent.
        LOG.debug("Unable to continue serialization for {}. Skipping remaining content.", metadata.getId(), e);
    } finally {
        try {
            jsonOutput.close();
        } catch (IOException e) {
            LOG.error("Unable to close output", e);
        }
    }
}

From source file:net.solarnetwork.web.support.JSONView.java

private void writeJsonValue(JsonGenerator json, String key, Object val, PropertyEditorRegistrar registrar)
        throws JsonGenerationException, IOException {
    if (val instanceof Collection<?> || (val != null && val.getClass().isArray())) {
        Collection<?> col;//from w w  w .  j  a v a  2 s  .c o  m
        if (val instanceof Collection<?>) {
            col = (Collection<?>) val;
        } else if (!val.getClass().getComponentType().isPrimitive()) {
            col = Arrays.asList((Object[]) val);
        } else {
            // damn you, primitives
            col = getPrimitiveCollection(val);
        }
        if (key != null) {
            json.writeFieldName(key);
        }
        json.writeStartArray();
        for (Object colObj : col) {
            writeJsonValue(json, null, colObj, registrar);
        }

        json.writeEndArray();
    } else if (val instanceof Map<?, ?>) {
        if (key != null) {
            json.writeFieldName(key);
        }
        json.writeStartObject();
        for (Map.Entry<?, ?> me : ((Map<?, ?>) val).entrySet()) {
            Object propName = me.getKey();
            if (propName == null) {
                continue;
            }
            writeJsonValue(json, propName.toString(), me.getValue(), registrar);
        }
        json.writeEndObject();
    } else if (val instanceof Double) {
        if (key == null) {
            json.writeNumber((Double) val);
        } else {
            json.writeNumberField(key, (Double) val);
        }
    } else if (val instanceof Integer) {
        if (key == null) {
            json.writeNumber((Integer) val);
        } else {
            json.writeNumberField(key, (Integer) val);
        }
    } else if (val instanceof Short) {
        if (key == null) {
            json.writeNumber(((Short) val).intValue());
        } else {
            json.writeNumberField(key, ((Short) val).intValue());
        }
    } else if (val instanceof Float) {
        if (key == null) {
            json.writeNumber((Float) val);
        } else {
            json.writeNumberField(key, (Float) val);
        }
    } else if (val instanceof Long) {
        if (key == null) {
            json.writeNumber((Long) val);
        } else {
            json.writeNumberField(key, (Long) val);
        }
    } else if (val instanceof Boolean) {
        if (key == null) {
            json.writeBoolean((Boolean) val);
        } else {
            json.writeBooleanField(key, (Boolean) val);
        }
    } else if (val instanceof String) {
        if (key == null) {
            json.writeString((String) val);
        } else {
            json.writeStringField(key, (String) val);
        }
    } else {
        // create a JSON object from bean properties
        if (getPropertySerializerRegistrar() != null && val != null) {
            // try whole-bean serialization first
            Object o = getPropertySerializerRegistrar().serializeProperty(key, val.getClass(), val, val);
            if (o != val) {
                if (o != null) {
                    writeJsonValue(json, key, o, registrar);
                }
                return;
            }
        }
        generateJavaBeanObject(json, key, val, registrar);
    }
}

From source file:com.jxt.web.vo.AgentActiveThreadCountList.java

@Override
public void serialize(AgentActiveThreadCountList agentActiveThreadStatusList, JsonGenerator jgen,
        SerializerProvider provider) throws IOException, JsonProcessingException {
    List<AgentActiveThreadCount> agentActiveThreadRepository = agentActiveThreadStatusList
            .getAgentActiveThreadRepository();

    jgen.writeStartObject();/*from   w  w w  .  j  a v a2s  . c  o  m*/

    for (AgentActiveThreadCount agentActiveThread : agentActiveThreadRepository) {
        jgen.writeFieldName(agentActiveThread.getAgentId());
        jgen.writeStartObject();

        jgen.writeNumberField("code", agentActiveThread.getCode());
        jgen.writeStringField("message", agentActiveThread.getCodeMessage());

        TCmdActiveThreadCountRes activeThreadCount = agentActiveThread.getActiveThreadCount();
        if (activeThreadCount != null) {
            if (activeThreadCount.getActiveThreadCountSize() >= 4) {
                List<Integer> values = activeThreadCount.getActiveThreadCount();

                jgen.writeFieldName("status");
                jgen.writeStartArray();
                jgen.writeNumber(values.get(0));
                jgen.writeNumber(values.get(1));
                jgen.writeNumber(values.get(2));
                jgen.writeNumber(values.get(3));
                jgen.writeEndArray();
            }
        }

        jgen.writeEndObject();
    }

    jgen.writeEndObject();
}