| /* |
| * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package jakarta.json; |
| |
| /** |
| * <code>JsonValue</code> represents an immutable JSON value. |
| * |
| * |
| * <p>A JSON value is one of the following: |
| * an object ({@link JsonObject}), an array ({@link JsonArray}), |
| * a number ({@link JsonNumber}), a string ({@link JsonString}), |
| * {@code true} ({@link JsonValue#TRUE JsonValue.TRUE}), {@code false} |
| * ({@link JsonValue#FALSE JsonValue.FALSE}), |
| * or {@code null} ({@link JsonValue#NULL JsonValue.NULL}). |
| */ |
| public interface JsonValue { |
| |
| /** |
| * The empty JSON object. |
| * |
| * @since 1.1 |
| */ |
| static final JsonObject EMPTY_JSON_OBJECT = new EmptyObject(); |
| |
| /** |
| * The empty JSON array. |
| * |
| * @since 1.1 |
| */ |
| static final JsonArray EMPTY_JSON_ARRAY = new EmptyArray(); |
| |
| /** |
| * Indicates the type of a {@link JsonValue} object. |
| */ |
| enum ValueType { |
| /** |
| * JSON array. |
| */ |
| ARRAY, |
| |
| /** |
| * JSON object. |
| */ |
| OBJECT, |
| |
| /** |
| * JSON string. |
| */ |
| STRING, |
| |
| /** |
| * JSON number. |
| */ |
| NUMBER, |
| |
| /** |
| * JSON true. |
| */ |
| TRUE, |
| |
| /** |
| * JSON false. |
| */ |
| FALSE, |
| |
| /** |
| * JSON null. |
| */ |
| NULL |
| } |
| |
| /** |
| * JSON null value. |
| */ |
| static final JsonValue NULL = new JsonValueImpl(ValueType.NULL); |
| |
| /** |
| * JSON true value. |
| */ |
| static final JsonValue TRUE = new JsonValueImpl(ValueType.TRUE); |
| |
| /** |
| * JSON false value. |
| */ |
| static final JsonValue FALSE = new JsonValueImpl(ValueType.FALSE); |
| |
| /** |
| * Returns the value type of this JSON value. |
| * |
| * @return JSON value type |
| */ |
| ValueType getValueType(); |
| |
| /** |
| * Return the JsonValue as a JsonObject |
| * |
| * @return the JsonValue as a JsonObject |
| * @throws ClassCastException if the JsonValue is not a JsonObject |
| * |
| * @since 1.1 |
| */ |
| default JsonObject asJsonObject() { |
| return JsonObject.class.cast(this); |
| } |
| |
| /** |
| * Return the JsonValue as a JsonArray |
| * |
| * @return the JsonValue as a JsonArray |
| * @throws ClassCastException if the JsonValue is not a JsonArray |
| * |
| * @since 1.1 |
| */ |
| default JsonArray asJsonArray() { |
| return JsonArray.class.cast(this); |
| } |
| |
| /** |
| * Returns JSON text for this JSON value. |
| * |
| * @return JSON text |
| */ |
| @Override |
| String toString(); |
| |
| } |