private void createProperty()

in src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceSerializer.java [117:167]


    private void createProperty(
            final JsonGenerator jgen,
            final ValueMap valueMap,
            final String key,
            final Object value,
            final SerializerProvider provider)
            throws IOException {
        Object[] values = null;
        if (value.getClass().isArray()) {
            final int length = Array.getLength(value);
            // write out empty array
            if (length == 0) {
                jgen.writeArrayFieldStart(key);
                jgen.writeEndArray();
                return;
            }
            values = new Object[Array.getLength(value)];
            for (int i = 0; i < length; i++) {
                values[i] = Array.get(value, i);
            }
        }

        // special handling for binaries: we dump the length and not the data!
        if (value instanceof InputStream || (values != null && values[0] instanceof InputStream)) {
            // TODO for now we mark binary properties with an initial colon in
            // their name
            // (colon is not allowed as a JCR property name)
            // in the name, and the value should be the size of the binary data
            if (values == null) {
                jgen.writeNumberField(":" + key, getLength(valueMap, -1, key, (InputStream) value));
            } else {
                jgen.writeArrayFieldStart(":" + key);
                for (int i = 0; i < values.length; i++) {
                    jgen.writeNumber(getLength(valueMap, i, key, (InputStream) values[i]));
                }
                jgen.writeEndArray();
            }
            return;
        }

        if (!value.getClass().isArray()) {
            jgen.writeFieldName(key);
            writeValue(jgen, value, provider);
        } else {
            jgen.writeArrayFieldStart(key);
            for (Object v : values) {
                writeValue(jgen, v, provider);
            }
            jgen.writeEndArray();
        }
    }