elemental.json.JsonValue Maven / Gradle / Ivy
/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package elemental.json;
import java.io.Serializable;
/**
* Base interface for all Json values.
*/
public interface JsonValue extends Serializable {
/**
* Coerces underlying value to boolean according to the rules of Javascript coercion.
*/
boolean asBoolean();
/**
* Coerces the underlying value to a number according to the rules of Javascript coercion.
*/
double asNumber();
/**
* Coerces the underlying value to a String according to the rules of JavaScript coercion.
*/
String asString();
/**
* Returns an enumeration representing the fundamental JSON type.
*/
JsonType getType();
/**
* Returns a serialized JSON string representing this value.
* @return
*/
String toJson();
/**
* Equivalent of Javascript '==' operator comparison between two values.
*/
boolean jsEquals(JsonValue value);
/**
* If used in a GWT context (dev or prod mode), converts the object to a native JavaScriptObject
* suitable for passing to JSNI methods. Otherwise, returns the current object in other contexts,
* such as server-side use.
*/
Object toNative();
}