当前位置: 首页 > 工具软件 > JSONVALUE > 使用案例 >

JsonValue、JsonString、JsonNumber源码翻译

益稳
2023-12-01

package javax.json;
/**
 * 目的:定义JSON值的类型(不可变的JSON值)
 * 
 * <p>JSON值有:{@link JsonObject}、{@link JsonArray}
 * 			  {@link JsonNumber}、{@link JsonString}
 * 			  JsonValue.TRUE、JsonValue.FALSE、JsonValue.NULL
 * @author TCM
 * @create 2017年11月3日上午10:31:23
 */
public interface JsonValue {

    //JSON值的类型
    enum ValueType {
        ARRAY,
        OBJECT,
        STRING,
        NUMBER,
        TRUE,
        FALSE,
        NULL
    }

    /**
     * JSON的NULL值,即:JsonValue.NULL
     */
    static final JsonValue NULL = new JsonValue() {
        @Override
        public ValueType getValueType() {
            return ValueType.NULL;
        }

        @Override
        public boolean equals(Object obj) {
            if (obj instanceof JsonValue) {
                return getValueType().equals(((JsonValue)obj).getValueType());
            }
            return false;
        }

        @Override
        public int hashCode() {
            return ValueType.NULL.hashCode();
        }

        //返回字符串“null”
        @Override
        public String toString() {
            return "null";
        }
    };

    /**
     * JSON的TRUE值,即:JsonValue.TRUE
     */
    static final JsonValue TRUE = new JsonValue() {
        @Override
        public ValueType getValueType() {
            return ValueType.TRUE;
        }

        @Override
        public boolean equals(Object obj) {
            if (obj instanceof JsonValue) {
                return getValueType().equals(((JsonValue)obj).getValueType());
            }
            return false;
        }

        @Override
        public int hashCode() {
            return ValueType.TRUE.hashCode();
        }

        //返回字符串“true”
        @Override
        public String toString() {
            return "true";
        }
    };

    /**
     * JSON的FALSE值,即:JsonValue.FALSE
     */
    static final JsonValue FALSE = new JsonValue() {
        @Override
        public ValueType getValueType() {
            return ValueType.FALSE;
        }

        @Override
        public boolean equals(Object obj) {
            if (obj instanceof JsonValue) {
                return getValueType().equals(((JsonValue)obj).getValueType());
            }
            return false;
        }

        @Override
        public int hashCode() {
            return ValueType.FALSE.hashCode();
        }

        //返回字符串“false”
        @Override
        public String toString() {
            return "false";
        }
    };

    //获取JSON值的类型
    ValueType getValueType();

    @Override
    String toString();

}
package javax.json;
/**
 * 不可变的JSON字符串值
 * @author TCM
 * @create 2017年11月3日上午10:51:18
 */
public interface JsonString extends JsonValue {

    String getString();
    //返回JSON字符串值的char序列
    CharSequence getChars();
    @Override
    boolean equals(Object obj);
    @Override
    int hashCode();

}
package javax.json;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 目的:不变的JSON数值
 * 
 * 注意:这个类中的一些方法语义是使用BigDecimal语义定义的。
 * @author TCM
 * @create 2017年11月3日下午1:18:38
 */
public interface JsonNumber extends JsonValue {

    /**
     * 判定JSON数值是不是整数
     * 
     * 例如:
     * 	JsonNumber num = ...
 	 *	if (num.isIntegral()) {
     * 		num.longValue();     // or other methods to get integral value
 	 *	} else {
     *		num.doubleValue();   // or other methods to get decimal number value
 	 *	}
     * @return 返回true,是整数
     */
    boolean isIntegral();

    /**
     * @see java.math.BigDecimal#intValue()
     */
    int intValue();

    /**
     * @see java.math.BigDecimal#intValueExact()
     */
    int intValueExact();

    long longValue();
    long longValueExact();

    /**
     * @see java.math.BigDecimal#toBigInteger()
     */
    BigInteger bigIntegerValue();

    /**
     * @see java.math.BigDecimal#toBigIntegerExact()
     */
    BigInteger bigIntegerValueExact();

    double doubleValue();

    BigDecimal bigDecimalValue();

    @Override
    String toString();
    @Override
    boolean equals(Object obj);
    @Override
    int hashCode();

}

 类似资料: