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

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

Introduction

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

Prototype

public final void writeObjectFieldStart(String fieldName) throws IOException, JsonGenerationException 

Source Link

Document

Convenience method for outputting a field entry ("member") (that will contain a JSON Object value), and the START_OBJECT marker.

Usage

From source file:com.arpnetworking.logback.serialization.BaseSerializationStrategy.java

/**
 * This function assumes the field object has already been started for this throwable, this only fills in
 * the fields in the 'exception' or equivalent object and does not create the field in the containing object.
 *
 * @param throwableProxy Throwable to serialize
 * @param jsonGenerator  <code>JsonGenerator</code> instance after exception object is started
 * @param objectMapper <code>ObjectMapper</code> instance.
 * @throws IOException If writing the <code>Throwable</code> as JSON fails.
 *//*  w ww.java  2 s .com*/
protected void serializeThrowable(final IThrowableProxy throwableProxy, final JsonGenerator jsonGenerator,
        final ObjectMapper objectMapper) throws IOException {

    jsonGenerator.writeObjectField("type", throwableProxy.getClassName());
    jsonGenerator.writeObjectField("message", throwableProxy.getMessage());
    jsonGenerator.writeArrayFieldStart("backtrace");
    for (StackTraceElementProxy ste : throwableProxy.getStackTraceElementProxyArray()) {
        jsonGenerator.writeString(ste.toString());
    }
    jsonGenerator.writeEndArray();
    jsonGenerator.writeObjectFieldStart("data");
    if (throwableProxy.getSuppressed() != null) {
        jsonGenerator.writeArrayFieldStart("suppressed");
        for (IThrowableProxy suppressed : throwableProxy.getSuppressed()) {
            jsonGenerator.writeStartObject();
            serializeThrowable(suppressed, jsonGenerator, objectMapper);
            jsonGenerator.writeEndObject();
        }
        jsonGenerator.writeEndArray();
    }
    if (throwableProxy.getCause() != null) {
        jsonGenerator.writeObjectFieldStart("cause");
        serializeThrowable(throwableProxy.getCause(), jsonGenerator, objectMapper);
        jsonGenerator.writeEndObject();
    }
    jsonGenerator.writeEndObject();
}

From source file:org.n52.tamis.core.json.serialize.processes.execute.ExecuteInputSerializer.java

private void writeAsReference(JsonGenerator jsonGenerator, ExecuteInput input) throws IOException {
    /*/* ww w  .j a v a  2s.  c  o m*/
     *  expected structure looks like:
    * 
        * "Reference": { "_href":
        * "http://fluggs.wupperverband.de/sos2/service?service=SOS&request=GetObservation&version=2.0.0&offering=Zeitreihen_2m_Tiefe&observedProperty=Grundwasserstand&responseFormat=http%3A//www.opengis.net/om/2.0",
        * "_mimeType": "application/om+xml; version=2.0", "_schema":
        * "http://schemas.opengis.net/om/2.0/observation.xsd" }, "_id":
        * "gw1" }
        * 
     */

    logger.info("Input \"{}\" is serialized as WPS \"Reference\".", input);

    jsonGenerator.writeStartObject();

    jsonGenerator.writeObjectFieldStart("Reference");

    // jsonGenerator.writeStartObject();

    jsonGenerator.writeStringField("_href", input.getValue());

    /*
     * parameters "_mimeType" and "_schema" can be set to SOS values, if
     * the link is a SOS request!
     * 
     * Else we do not know anything about the mimeType. Thus we cannot
     * set it.
     */

    jsonGenerator.writeEndObject();

    jsonGenerator.writeStringField("_id", input.getId());

    jsonGenerator.writeEndObject();
}

From source file:io.airlift.event.client.EventJsonSerializer.java

@Override
public void serialize(T event, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
    jsonGenerator.writeStartObject();/*from   w w w . j  av a 2  s.  c o m*/

    jsonGenerator.writeStringField("type", eventTypeMetadata.getTypeName());

    if (eventTypeMetadata.getUuidField() != null) {
        eventTypeMetadata.getUuidField().writeField(jsonGenerator, event);
    } else {
        jsonGenerator.writeStringField("uuid", UUID.randomUUID().toString());
    }

    if (eventTypeMetadata.getHostField() != null) {
        eventTypeMetadata.getHostField().writeField(jsonGenerator, event);
    } else {
        jsonGenerator.writeStringField("host", hostName);
    }

    if (eventTypeMetadata.getTimestampField() != null) {
        eventTypeMetadata.getTimestampField().writeField(jsonGenerator, event);
    } else {
        jsonGenerator.writeFieldName("timestamp");
        EventDataType.DATETIME.writeFieldValue(jsonGenerator, new DateTime());
    }

    jsonGenerator.writeObjectFieldStart("data");
    for (EventFieldMetadata field : eventTypeMetadata.getFields()) {
        field.writeField(jsonGenerator, event);
    }
    jsonGenerator.writeEndObject();

    jsonGenerator.writeEndObject();
    jsonGenerator.flush();
}

From source file:com.ntsync.shared.RawContact.java

private void writeStructuredName(JsonGenerator g) throws IOException {
    g.writeObjectFieldStart(ContactConstants.STRUCTUREDNAME);

    writeField(g, ContactConstants.DISPLAY_NAME, displayName);
    writeField(g, ContactConstants.FAMILY_NAME, lastName);
    writeField(g, ContactConstants.GIVEN_NAME, firstName);
    writeField(g, ContactConstants.MIDDLE_NAME, middleName);
    writeField(g, ContactConstants.PREFIX_NAME, prefixName);
    writeField(g, ContactConstants.SUFFIX_NAME, suffixName);
    writeField(g, ContactConstants.PHONETIC_FAMILY, phoneticFamilyName);
    writeField(g, ContactConstants.PHONETIC_GIVEN, phoneticGivenName);
    writeField(g, ContactConstants.PHONETIC_MIDDLE, phoneticMiddleName);
    g.writeEndObject();/*from w ww  .  j a v  a  2s  . com*/
}

From source file:org.codehaus.modello.plugin.jsonschema.JsonSchemaGenerator.java

private void generateJsonSchema(Properties parameters) throws IOException, ModelloException {
    Model objectModel = getModel();/*  w w  w.jav  a  2 s  .com*/

    File directory = getOutputDirectory();

    if (isPackageWithVersion()) {
        directory = new File(directory, getGeneratedVersion().toString());
    }

    if (!directory.exists()) {
        directory.mkdirs();
    }

    // we assume parameters not null
    String schemaFileName = parameters.getProperty(ModelloParameterConstants.OUTPUT_JSONSCHEMA_FILE_NAME);

    File schemaFile;

    if (schemaFileName != null) {
        schemaFile = new File(directory, schemaFileName);
    } else {
        schemaFile = new File(directory, objectModel.getId() + "-" + getGeneratedVersion() + ".schema.json");
    }

    JsonGenerator generator = new JsonFactory().enable(Feature.AUTO_CLOSE_JSON_CONTENT)
            .enable(Feature.AUTO_CLOSE_TARGET).enable(Feature.ESCAPE_NON_ASCII)
            .enable(Feature.FLUSH_PASSED_TO_STREAM).enable(Feature.QUOTE_FIELD_NAMES)
            .enable(Feature.QUOTE_NON_NUMERIC_NUMBERS).disable(Feature.WRITE_NUMBERS_AS_STRINGS)
            .createGenerator(schemaFile, JsonEncoding.UTF8);

    generator.useDefaultPrettyPrinter();

    ModelClass root = objectModel.getClass(objectModel.getRoot(getGeneratedVersion()), getGeneratedVersion());

    try {
        generator.writeStartObject();
        generator.writeStringField("$schema", "http://json-schema.org/draft-04/schema#");

        writeClassDocumentation(generator, root, true);

        generator.writeObjectFieldStart("definitions");

        for (ModelClass current : objectModel.getClasses(getGeneratedVersion())) {
            if (!root.equals(current)) {
                writeClassDocumentation(generator, current, false);
            }
        }

        // end "definitions"
        generator.writeEndObject();

        // end main object
        generator.writeEndObject();
    } finally {
        generator.close();
    }
}

From source file:net.opentsdb.meta.UIDMeta.java

/**
 * Formats the JSON output for writing to storage. It drops objects we don't
 * need or want to store (such as the UIDMeta objects or the total dps) to
 * save space. It also serializes in order so that we can make a proper CAS
 * call. Otherwise the POJO serializer may place the fields in any order
 * and CAS calls would fail all the time.
 * @return A byte array to write to storage
 *//*from   w  w w.j  ava  2  s  .  c  o m*/
private byte[] getStorageJSON() {
    // 256 bytes is a good starting value, assumes default info
    final ByteArrayOutputStream output = new ByteArrayOutputStream(256);
    try {
        final JsonGenerator json = JSON.getFactory().createGenerator(output);
        json.writeStartObject();
        json.writeStringField("type", type.toString());
        json.writeStringField("displayName", display_name);
        json.writeStringField("description", description);
        json.writeStringField("notes", notes);
        json.writeNumberField("created", created);
        if (custom == null) {
            json.writeNullField("custom");
        } else {
            json.writeObjectFieldStart("custom");
            for (Map.Entry<String, String> entry : custom.entrySet()) {
                json.writeStringField(entry.getKey(), entry.getValue());
            }
            json.writeEndObject();
        }

        json.writeEndObject();
        json.close();
        return output.toByteArray();
    } catch (IOException e) {
        throw new RuntimeException("Unable to serialize UIDMeta", e);
    }
}

From source file:com.msopentech.odatajclient.engine.performance.BasicPerfTest.java

@Test
public void writeJSONViaLowerlevelLibs() throws IOException {
    final StringWriter writer = new StringWriter();

    final ObjectMapper mapper = new ObjectMapper();

    final JsonGenerator jgen = mapper.getFactory().createGenerator(writer);

    jgen.writeStartObject();// w  w  w.j  a va2  s . co  m

    jgen.writeStringField("odata.type", "Microsoft.Test.OData.Services.AstoriaDefaultService.Customer");

    jgen.writeStringField("Name@odata.type", "Edm.String");
    jgen.writeStringField("Name", "A name");

    jgen.writeStringField("CustomerId@odata.type", "Edm.Int32");
    jgen.writeNumberField("CustomerId", 0);

    jgen.writeArrayFieldStart("BackupContactInfo");

    jgen.writeStartObject();

    jgen.writeArrayFieldStart("AlternativeNames");
    jgen.writeString("myname");
    jgen.writeEndArray();

    jgen.writeArrayFieldStart("EmailBag");
    jgen.writeString("myname@mydomain.com");
    jgen.writeEndArray();

    jgen.writeObjectFieldStart("ContactAlias");
    jgen.writeStringField("odata.type", "Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases");
    jgen.writeArrayFieldStart("AlternativeNames");
    jgen.writeString("myAlternativeName");
    jgen.writeEndArray();
    jgen.writeEndObject();

    jgen.writeEndObject();

    jgen.writeEndArray();

    jgen.writeEndObject();

    jgen.flush();

    assertFalse(writer.toString().isEmpty());
}

From source file:com.baidubce.services.bmr.BmrClient.java

/**
 * Add steps to a BMR cluster./*from  w w  w .j a  v  a 2 s.  co  m*/
 *
 * @param request containing the ID of target BMR cluster and several steps to be added.
 * @return The response containing a list of IDs of newly added steps.
 */
public AddStepsResponse addSteps(AddStepsRequest request) {
    checkNotNull(request, "request should not be null.");
    checkNotNull(request.getSteps(), "The parameter steps should not be null.");
    checkStringNotEmpty(request.getClusterId(), "The parameter clusterId should not be null or empty string.");

    StringWriter writer = new StringWriter();
    List<StepConfig> steps = request.getSteps();
    try {
        JsonGenerator jsonGenerator = JsonUtils.jsonGeneratorOf(writer);
        jsonGenerator.writeStartObject();
        jsonGenerator.writeArrayFieldStart("steps");
        for (StepConfig step : steps) {
            jsonGenerator.writeStartObject();
            if (step.getName() != null) {
                jsonGenerator.writeStringField("name", step.getName());
            }
            jsonGenerator.writeStringField("type", step.getType());
            jsonGenerator.writeStringField("actionOnFailure", step.getActionOnFailure());
            jsonGenerator.writeObjectFieldStart("properties");
            for (String propertyKey : step.getProperties().keySet()) {
                jsonGenerator.writeObjectField(propertyKey, step.getProperties().get(propertyKey));
            }
            jsonGenerator.writeEndObject();
            jsonGenerator.writeEndObject();
        }
        jsonGenerator.writeEndArray();
        jsonGenerator.writeEndObject();
        jsonGenerator.close();
    } catch (IOException e) {
        throw new BceClientException("Fail to generate json", e);
    }

    byte[] json = null;
    try {
        json = writer.toString().getBytes(DEFAULT_ENCODING);
    } catch (UnsupportedEncodingException e) {
        throw new BceClientException("Fail to get UTF-8 bytes", e);
    }

    InternalRequest internalRequest = this.createRequest(request, HttpMethodName.POST, CLUSTER,
            request.getClusterId(), STEP);
    internalRequest.addHeader(Headers.CONTENT_LENGTH, String.valueOf(json.length));
    internalRequest.addHeader(Headers.CONTENT_TYPE, "application/json");

    internalRequest.setContent(RestartableInputStream.wrap(json));

    if (request.getClientToken() != null) {
        internalRequest.addParameter("clientToken", request.getClientToken());
    }

    return this.invokeHttpClient(internalRequest, AddStepsResponse.class);
}

From source file:pl.selvin.android.syncframework.content.TableInfo.java

public void GetChanges(SQLiteDatabase db, JsonGenerator gen, ArrayList<TableInfo> notifyTableInfo)
        throws IOException {
    String[] cols = new String[columns.length + 3];
    int i = 0;//  w w w.ja  v  a  2s  .  c o m
    for (; i < columns.length; i++)
        cols[i] = columns[i].name;
    cols[i] = _.uri;
    cols[i + 1] = _.tempId;
    cols[i + 2] = _.isDeleted;
    Cursor c = db.query(name, cols, _.isDirtyP, new String[] { "1" }, null, null, null);
    //to fix startPos  > actual rows for large cursors db operations should be done after cursor is closed ...
    final ArrayList<OperationHolder> operations = new ArrayList<OperationHolder>();
    if (c.moveToFirst()) {
        if (!notifyTableInfo.contains(this))
            notifyTableInfo.add(this);
        do {

            gen.writeStartObject();
            gen.writeObjectFieldStart(_.__metadata);
            gen.writeBooleanField(_.isDirty, true);
            gen.writeStringField(_.type, scope_name);
            //Log.d("before", scope_name + ":" + c.getLong(i + 3));
            String uri = c.getString(i);
            //Log.d("after", scope_name + ":" + c.getLong(i + 3));
            if (uri == null) {
                gen.writeStringField(_.tempId, c.getString(i + 1));
            } else {
                gen.writeStringField(_.uri, uri);
                final ContentValues update = new ContentValues(1);
                update.put(_.isDirty, 0);
                operations.add(new OperationHolder(name, OperationHolder.UPDATE, update, uri));
            }
            boolean isDeleted = c.getInt(i + 2) == 1;
            if (isDeleted) {
                gen.writeBooleanField(_.isDeleted, true);
                gen.writeEndObject();// meta
                operations.add(new OperationHolder(name, OperationHolder.DELETE, null, uri));
            } else {
                gen.writeEndObject();// meta
                for (i = 0; i < columns.length; i++) {
                    if (columns[i].nullable && c.isNull(i)) {
                        gen.writeNullField(columns[i].name);
                    } else {
                        switch (columns[i].type) {
                        case ColumnType.BLOB:
                            gen.writeBinaryField(columns[i].name, c.getBlob(i));
                            break;
                        case ColumnType.BOOLEAN:
                            gen.writeBooleanField(columns[i].name, c.getLong(i) == 1);
                            break;
                        case ColumnType.INTEGER:
                            gen.writeNumberField(columns[i].name, c.getLong(i));
                            break;
                        case ColumnType.DATETIME:
                            try {
                                gen.writeStringField(columns[i].name,
                                        String.format(msdate, sdf.parse(c.getString(i)).getTime()));
                            } catch (Exception e) {
                                if (BuildConfig.DEBUG) {
                                    Log.e("ListSync", e.getLocalizedMessage());
                                }
                            }
                            break;
                        case ColumnType.NUMERIC:
                            gen.writeNumberField(columns[i].name, c.getDouble(i));
                            break;
                        default:
                            gen.writeStringField(columns[i].name, c.getString(i));
                            break;
                        }
                    }
                }
            }
            gen.writeEndObject(); // end of row
        } while (c.moveToNext());
    }
    c.close();
    for (OperationHolder operation : operations)
        operation.execute(db);
}