/*
 * 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;

