org.springframework.batch.item.json

## Class JsonFileItemWriter<T>

- java.lang.Object
- - org.springframework.batch.item.ItemStreamSupport
  - - org.springframework.batch.item.support.AbstractItemStreamItemWriter<T>
    - - org.springframework.batch.item.support.AbstractFileItemWriter<T>
      - - org.springframework.batch.item.json.JsonFileItemWriter<T>

- Type Parameters:
    `T` - type of object to write as json representation
  All Implemented Interfaces:
    ResourceAwareItemWriterItemStream<T>, ItemStream, ItemStreamWriter<T>, ItemWriter<T>, org.springframework.beans.factory.InitializingBean

      public class JsonFileItemWriter<T>
      extends AbstractFileItemWriter<T>

  Item writer that writes data in json format to an output file. The location of the output file is defined by a `Resource` and must represent a writable file. Items are transformed to json format using a `JsonObjectMarshaller`. Items will be enclosed in a json array as follows:

  `[ {json object}, {json object}, {json object} ]`

  The implementation is not thread-safe.
  Since:
    4.1
  Author:
    Mahmoud Ben Hassine
  See Also:
    `GsonJsonObjectMarshaller`, `JacksonJsonObjectMarshaller`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.springframework.batch.item.support.AbstractFileItemWriter

      `AbstractFileItemWriter.OutputState`

  - ### Field Summary

    - ### Fields inherited from class org.springframework.batch.item.support.AbstractFileItemWriter

      `append, DEFAULT_CHARSET, DEFAULT_LINE_SEPARATOR, DEFAULT_TRANSACTIONAL, lineSeparator, logger, shouldDeleteIfExists, state`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JsonFileItemWriter(org.springframework.core.io.Resource resource, JsonObjectMarshaller<T> jsonObjectMarshaller)` Create a new `JsonFileItemWriter` instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Assert that mandatory properties (jsonObjectMarshaller) are set.
    `java.lang.String` | `doWrite(java.util.List<? extends T> items)` Write out a string of items followed by a "new line", where the format of the new line separator is determined by the underlying operating system.
    `void` | `setJsonObjectMarshaller(JsonObjectMarshaller<T> jsonObjectMarshaller)` Set the `JsonObjectMarshaller` to use to marshal object to json.

    - ### Methods inherited from class org.springframework.batch.item.support.AbstractFileItemWriter

      `close, getOutputState, open, setAppendAllowed, setEncoding, setFooterCallback, setForceSync, setHeaderCallback, setLineSeparator, setResource, setSaveState, setShouldDeleteIfEmpty, setShouldDeleteIfExists, setTransactional, update, write`

    - ### Methods inherited from class org.springframework.batch.item.ItemStreamSupport

      `getExecutionContextKey, setExecutionContextName, setName`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### JsonFileItemWriter

          public JsonFileItemWriter(org.springframework.core.io.Resource resource,
                                    JsonObjectMarshaller<T> jsonObjectMarshaller)

      Create a new `JsonFileItemWriter` instance.
      Parameters:
        `resource` - to write json data to
        `jsonObjectMarshaller` - used to marshal object into json representation

  - ### Method Detail

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Assert that mandatory properties (jsonObjectMarshaller) are set.
      Throws:
        `java.lang.Exception`
      See Also:
        `InitializingBean.afterPropertiesSet()`

    - #### setJsonObjectMarshaller

          public void setJsonObjectMarshaller(JsonObjectMarshaller<T> jsonObjectMarshaller)

      Set the `JsonObjectMarshaller` to use to marshal object to json.
      Parameters:
        `jsonObjectMarshaller` - the marshaller to use

    - #### doWrite

          public java.lang.String doWrite(java.util.List<? extends T> items)

      Description copied from class: `AbstractFileItemWriter`
      Write out a string of items followed by a "new line", where the format of the new line separator is determined by the underlying operating system.
      Specified by:
        `doWrite` in class `AbstractFileItemWriter<T>`
      Parameters:
        `items` - to be written
      Returns:
        written lines