JsonObject、JsonArray、JsonStructure源码翻译


/**
 * JSON(objects和arrays)中的两种结构化类型的超类型。
 * {@link JsonObject object}和{@link JsonArray array}
 * @author TCM
 * @create 2017年11月3日下午1:29:03
 */
public interface JsonStructure extends JsonValue {

}
package javax.json;

import java.util.List;

/**
 * 目的:JSON数组对象
 * 
 * <p>JsonArray表示不变的JSON数组(序列从0开始)。还提供一种不变的列表视图。
 * 
 * <p>从输入源读取JSON数据时,JsonArray对象将被创建,将构建一个数组。
 * 下面是输入源中创建一个JSON数组对象示例:
 * 		JsonReader jsonReader = Json.createReader(...);
 * 		JsonArray array = jsonReader.readArray();
 * 		jsonReader.close();
 * 
 * <p>{@link JsonArrayBuilder}创建JSON数组:
 * 		JsonArray array = Json.createArrayBuilder().build();
 * 
 * <p>JSON数组示例:
 * 		[
 *     		{ "type": "home", "number": "212 555-1234" },
 *     		{ "type": "fax", "number": "646 555-4567" }
 * 		]
 * 如何创建:
 * JsonArray value = Json.createArrayBuilder()
 *     .add(Json.createObjectBuilder()
 *         .add("type", "home")
 *         .add("number", "212 555-1234"))
 *     .add(Json.createObjectBuilder()
 *         .add("type", "fax")
 *         .add("number", "646 555-4567"))
 *     .build();
 * 获取JSON数组元素:
 * 		JsonObject home = array.getJsonObject(0);
 * 		String number = home.getString("number");
 * 
 * <p>注意问题:JsonArray实例是只读的JsonObject列表,任何尝试修改,则
 * 抛出{@code UnsupportedOperationException}异常。
 * @author TCM
 * @create 2017年11月3日下午1:40:42
 */
public interface JsonArray extends JsonStructure, List<JsonValue> {

	//根据索引获取JsonObject对象
    JsonObject getJsonObject(int index);
    //根据索引获取JsonArray对象(数组中的数组)
    JsonArray getJsonArray(int index);

    JsonNumber getJsonNumber(int index);//getJsonNumber(index).intValue()
    JsonString getJsonString(int index);//getJsonNumber(index).getString()

    //获取指定JsonValue类型的数组。可能抛出{@code ClassCastException}
    <T extends JsonValue> List<T> getValuesAs(Class<T> clazz);

    String getString(int index);
    //根据索引获取string值,否则返回默认值
    String getString(int index, String defaultValue);
    int getInt(int index);
    int getInt(int index, int defaultValue);
    boolean getBoolean(int index);
    boolean getBoolean(int index, boolean defaultValue);
    //指定索引的值是否为null,若没有则为true。JsonValue.NULL
    boolean isNull(int index);

}
package javax.json;

import java.util.Map;

/**
 * 目的:JSON对象
 * 
 * <p>JsonObject是不可变的JSON对象(无序的一个或多个name/value对的集合)。
 * 提供对JSON对象不变的映射视图。
 * 
 * <p>JSON对象的示例:
 * 		{
 *     		"firstName": "John", "lastName": "Smith", "age": 25,
 *     		"address" : {
 *         		"streetAddress": "21 2nd Street",
 *         		"city": "New York",
 *         		"state": "NY",
 *         		"postalCode": "10021"
 *     		},
 *     		"phoneNumber": [
 *         		{ "type": "home", "number": "212 555-1234" },
 *         		{ "type": "fax", "number": "646 555-4567" }
 *     		]
 * 		}
 * 如何创建:
 * 		JsonObject value = Json.createObjectBuilder()
 *     		.add("firstName", "John")
 *     		.add("lastName", "Smith")
 *     		.add("age", 25)
 *     		.add("address", Json.createObjectBuilder()
 *         		.add("streetAddress", "21 2nd Street")
 *         		.add("city", "New York")
 *         		.add("state", "NY")
 *         		.add("postalCode", "10021"))
 *     		.add("phoneNumber", Json.createArrayBuilder()
 *         		.add(Json.createObjectBuilder()
 *             		.add("type", "home")
 *             		.add("number", "212 555-1234"))
 *         		.add(Json.createObjectBuilder()
 *             		.add("type", "fax")
 *             		.add("number", "646 555-4567")))
 *     		.build();
 * 
 * <p>JsonObject的创建方法:
 *   a. JsonReader jsonReader = Json.createReader(...);
 * 		JsonObject object = jsonReader.readObject();
 * 		jsonReader.close();
 *   b. JsonObject object = Json.createObjectBuilder().build();
 * @author TCM
 * @create 2017年11月6日上午9:55:21
 */
public interface JsonObject extends JsonStructure, Map<String, JsonValue> {

    JsonArray getJsonArray(String name);
    JsonObject getJsonObject(String name);
    JsonNumber getJsonNumber(String name);
    JsonString getJsonString(String name);
    String getString(String name);
    String getString(String name, String defaultValue);
    int getInt(String name);
    int getInt(String name, int defaultValue);
    boolean getBoolean(String name);
    boolean getBoolean(String name, boolean defaultValue);
    boolean isNull(String name);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值