/*
* Copyright 2014 Red Hat, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
/**
* == JSON
* :toc: left
*
* Unlike some other languages, Java does not have first class support for http://json.org/[JSON] so we provide
* two classes to make handling JSON in your Vert.x applications a bit easier.
*
* === JSON objects
*
* The {@link io.vertx.core.json.JsonObject} class represents JSON objects.
*
* A JSON object is basically just a map which has string keys and values can be of one of the JSON supported types
* (string, number, boolean).
*
* JSON objects also support null values.
*
* ==== Creating JSON objects
*
* Empty JSON objects can be created with the default constructor.
*
* You can create a JSON object from a string JSON representation as follows:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#example0_1}
* ----
*
* You can create a JSON object from a map as follows:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#exampleCreateFromMap}
* ----
*
* ==== Putting entries into a JSON object
*
* Use the {@link io.vertx.core.json.JsonObject#put} methods to put values into the JSON object.
*
* The method invocations can be chained because of the fluent API:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#example1}
* ----
*
* ==== Getting values from a JSON object
*
* You get values from a JSON object using the {@code getXXX} methods, for example:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#example2}
* ----
*
* ==== Mapping between JSON objects and Java objects
*
* You can create a JSON object from the fields of a Java object as follows:
*
* You can instantiate a Java object and populate its fields from a JSON object as follows:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#mapToPojo}
* ----
*
* Note that both of the above mapping directions use Jackson's `ObjectMapper#convertValue()` to perform the
* mapping. See the Jackson documentation for information on the impact of field and constructor visibility, caveats
* on serialization and deserialization across object references, etc.
*
* However, in the simplest case, both `mapFrom` and `mapTo` should succeed if all fields of the Java class are
* public (or have public getters/setters), and if there is a public default constructor (or no defined constructors).
*
* Referenced objects will be transitively serialized/deserialized to/from nested JSON objects as
* long as the object graph is acyclic.
*
* ==== Encoding a JSON object to a String
*
* You use {@link io.vertx.core.json.JsonObject#encode} to encode the object to a String form.
*
* === JSON arrays
*
* The {@link io.vertx.core.json.JsonArray} class represents JSON arrays.
*
* A JSON array is a sequence of values (string, number, boolean).
*
* JSON arrays can also contain null values.
*
* ==== Creating JSON arrays
*
* Empty JSON arrays can be created with the default constructor.
*
* You can create a JSON array from a string JSON representation as follows:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#example0_2}
* ----
*
* ==== Adding entries into a JSON array
*
* You add entries to a JSON array using the {@link io.vertx.core.json.JsonArray#add} methods.
*
* [source,java]
* ----
* {@link docoverride.json.Examples#example3}
* ----
*
* ==== Getting values from a JSON array
*
* You get values from a JSON array using the {@code getXXX} methods, for example:
*
* [source,java]
* ----
* {@link docoverride.json.Examples#example4}
* ----
*
* ==== Encoding a JSON array to a String
*
* You use {@link io.vertx.core.json.JsonArray#encode} to encode the array to a String form.
*
*
*/
@Document(fileName = "override/json.adoc")
package docoverride.json;
import io.vertx.docgen.Document;