004_JSONArray对象公共方法

1. add方法给JSONArray添加元素

1.1. boolean add(Object value), 给JSONArray添加值, 被当作Object类型添加。json-lib底层, 会创建一个JsonConfig对象使用。

1.2. boolean add(Object value, JsonConfig jsonConfig), 给JSONArray添加值, 被当作Object类型添加, 并指定一个JsonConfig。

1.3. void add(int index, Object value), 给JSONArray指定位置添加值, 被当作Object类型添加, 该位置的值以及之后位置的值向后移动一位。json-lib底层, 会创建一个JsonConfig对象使用。

1.4. void add(int index, Object value, JsonConfig jsonConfig), 给JSONArray指定位置添加值, 被当作Object类型添加, 该位置的值以及之后位置的值向后移动一位。并指定一个JsonConfig。

1.5. boolean addAll(Collection collection), 给JSONArray添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。json-lib底层, 会创建一个JsonConfig对象使用。

1.6. boolean addAll(Collection collection, JsonConfig jsonConfig), 给JSONArray添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。 并指定一个JsonConfig。

1.7. boolean addAll(int index, Collection collection), 给JSONArray指定位置添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。json-lib底层, 会创建一个JsonConfig对象使用。

1.8. boolean addAll(int index, Collection collection, JsonConfig jsonConfig), 给JSONArray指定位置添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。并指定一个JsonConfig。

1.9. add和addAll给JSONArray添加值, 事实上调用的是Java底层boolean java.util.List.add(Object e)的方法添加对象。

1.10. add和addAll给JSONArray指定位置添加值, 事实上调用的是Java底层void java.util.List.add(int index, Object element)的方法添加对象。

1.11. add系列方法可以给JSONArray添加JSONNull、空对象变量、空对象常量、"null"字符串, 效果是一样的都是"null"字符串。

1.12. 新建一个名为JSONArray的Java项目, 同时添加相关jar包。

1.13. 新建Sensor.java

package com.fj.ja;

import java.io.Serializable;

/**
 * 传感器
 */
public class Sensor implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private Boolean weightSensor; // 重力传感器
	private Boolean fingerSensor; // 指纹传感器
	private String otherSensor; // 其它传感器
	
	public Sensor() {}

	public Sensor(Boolean weightSensor, Boolean fingerSensor, String otherSensor) {
		this.weightSensor = weightSensor;
		this.fingerSensor = fingerSensor;
		this.otherSensor = otherSensor;
	}

	public Boolean getWeightSensor() {
		return weightSensor;
	}

	public void setWeightSensor(Boolean weightSensor) {
		this.weightSensor = weightSensor;
	}

	public Boolean getFingerSensor() {
		return fingerSensor;
	}

	public void setFingerSensor(Boolean fingerSensor) {
		this.fingerSensor = fingerSensor;
	}

	public String getOtherSensor() {
		return otherSensor;
	}

	public void setOtherSensor(String otherSensor) {
		this.otherSensor = otherSensor;
	}

	@Override
	public String toString() {
		return "{weightSensor=" + weightSensor + ", fingerSensor=" + fingerSensor + ", otherSensor=" + otherSensor + "}";
	}
}

1.14. 新建JSONArrayAdd.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/**
 * JSONArray
 * 1. boolean add(Object value), 给JSONArray添加值, 被当作Object类型添加。json-lib底层, 会创建一个JsonConfig对象使用。
 * 2. boolean add(Object value, JsonConfig jsonConfig), 给JSONArray添加值, 被当作Object类型添加, 并指定一个JsonConfig。
 * 3. void add(int index, Object value), 给JSONArray指定位置添加值, 被当作Object类型添加, 该位置的值以及之后位置的值向后移动一位。json-lib底层, 会创建一个JsonConfig对象使用。 
 * 4. void add(int index, Object value, JsonConfig jsonConfig), 给JSONArray指定位置添加值, 被当作Object类型添加, 该位置的值以及之后位置的值向后移动一位。并指定一个JsonConfig。
 * 5. boolean addAll(Collection collection), 给JSONArray添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。json-lib底层, 会创建一个JsonConfig对象使用。
 * 6. boolean addAll(Collection collection, JsonConfig jsonConfig), 给JSONArray添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。 并指定一个JsonConfig。
 * 7. boolean addAll(int index, Collection collection), 给JSONArray指定位置添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。json-lib底层, 会创建一个JsonConfig对象使用。
 * 8. boolean addAll(int index, Collection collection, JsonConfig jsonConfig), 给JSONArray指定位置添加Collection类型的值, 集合的元素被一个一个地添加到了JSONArray里。并指定一个JsonConfig。
 * 9. add和addAll给JSONArray添加值, 事实上调用的是Java底层boolean java.util.List.add(Object e)的方法添加对象。
 * 10. add和addAll给JSONArray指定位置添加值, 事实上调用的是Java底层void java.util.List.add(int index, Object element)的方法添加对象。
 * 11. add系列方法可以给JSONArray添加JSONNull、空对象变量、空对象常量、"null"字符串, 效果是一样的都是"null"字符串。
 */
public class JSONArrayAdd {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.add("NFC");
		transferFunction.add("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
		// null对象变量
		Object nullObjectVar = null;
		
		JSONArray jsonArray = new JSONArray();
		// 添加String类型的值, 被当作Object类型添加, 添加到JSONArray里面是String类型的值
		jsonArray.add("HUAWEI P40 Pro");
		// 添加boolean类型的值, 被当作Object类型添加, 添加到JSONArray里面是boolean类型的值
		jsonArray.add(true);
		// 添加int类型的值, 被当作Object类型添加, 添加到JSONArray里面是int类型的值
		jsonArray.add(5988);
		// 添加long类型的值, 被当作Object类型添加, 添加到JSONArray里面是long类型的值
		jsonArray.add(2601010188703L);
		// 给JSONArray指定位置添加double类型的值, 被当作Object类型添加, 添加到JSONArray里面是double类型的值
		jsonArray.add(0, 6.58D); 
		// 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.add(mobileColor, new JsonConfig());
		// 给JSONArray指定位置添加集合类型的值, , 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.add(0, isp, new JsonConfig()); 
		// 添加Map类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.add(mainParam); 
		// 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.add(sensor); 
		// 添加JSONObject类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.add(netJsonObject); 
		// 添加JSONArray类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.add(transferFunction); 
		jsonArray.add(""); // JSONArray可以添加""空字符串
		// 添加JSONNull类型的值, 被当作Object类型添加, 添加到JSONArray里面是"null"字符串
		jsonArray.add(jsonNull);
		jsonArray.add(nullObjectVar); // JSONArray可以添加空对象变量, 实际上存放的也是"null"字符串
		jsonArray.add(null); // JSONArray可以添加空对象常量, 实际上存放的也是"null"字符串
		jsonArray.add("null"); // JSONArray可以添加"null"字符串
		
		// 使用addAll给JSONArray添加集合类型的值, 会把集合里的元素一个一个地添加到JSONArray里面
		jsonArray.addAll(isp); 
		jsonArray.addAll(isp, new JsonConfig());
		jsonArray.addAll(0, Arrays.asList(mobileColor));
		jsonArray.addAll(0, Arrays.asList(mobileColor), new JsonConfig());

		System.out.println(jsonArray.toString());
	}
}

1.15. 运行JSONArrayAdd.java

2. element方法给JSONArray添加元素

2.1. element给JSONArray添加值

2.1.1. JSONArray element(String value), 给JSONArray添加String类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.2. JSONArray element(boolean value), 给JSONArray添加boolean类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.3. JSONArray element(int value), 给JSONArray添加int类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.4. JSONArray element(long value), 给JSONArray添加long类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.5. JSONArray element(double value), 给JSONArray添加double类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.6. JSONArray element(JSONNull value), 给JSONArray添加JSONNull类型的值。

2.1.7. JSONArray element(Collection value), 给JSONArray添加Collection类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.8. JSONArray element(Map value), 给JSONArray添加Map类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.9. JSONArray element(JSONObject value), 给JSONArray添加JSONObject类型的值。

2.1.10. JSONArray element(Object value), 给JSONArray添加Object类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.1.11. JSONArray element(String value, JsonConfig jsonConfig), 给JSONArray添加String类型的值。传入了一个JsonConfig对象。

2.1.12. JSONArray element(Collection value, JsonConfig jsonConfig), 给JSONArray添加Collection类型的值。传入了一个JsonConfig对象。

2.1.13. JSONArray element(Map value, JsonConfig jsonConfig), 给JSONArray添加Map类型的值。传入了一个JsonConfig对象。

2.1.14. JSONArray element(Object value, JsonConfig jsonConfig), 给JSONArray添加Object类型的值。传入了一个JsonConfig对象。

2.2. element给JSONArray指定位置替换值

2.2.1. JSONArray element(int index, String value), 给JSONArray指定位置替换String类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.2. JSONArray element(int index, boolean value), 给JSONArray指定位置替换boolean类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.3. JSONArray element(int index, int value), 给JSONArray指定位置替换int类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.4. JSONArray element(int index, long value), 给JSONArray指定位置替换long类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.5. JSONArray element(int index, double value), 给JSONArray指定位置替换double类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.6. JSONArray element(int index, Collection value), 给JSONArray指定位置替换Collection类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.7. JSONArray element(int index, Map value), 给JSONArray指定位置替换Map类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.8. JSONArray element(int index, Object value), 给JSONArray指定位置替换Object类型的值。json-lib底层, 会创建一个JsonConfig对象使用。

2.2.9. JSONArray element(int index, String value, JsonConfig jsonConfig), 给JSONArray指定位置替换String类型的值。传入了一个JsonConfig对象。

2.2.10. JSONArray element(int index, Collection value, JsonConfig jsonConfig), 给JSONArray指定位置替换Collection类型的值。传入了一个JsonConfig对象。

2.2.11. JSONArray element(int index, Map value, JsonConfig jsonConfig), 给JSONArray指定位置替换Map类型的值。传入了一个JsonConfig对象。

2.2.12. JSONArray element(int index, Object value, JsonConfig jsonConfig), 给JSONArray指定位置替换Object类型的值。传入了一个JsonConfig对象。

2.3. element给JSONArray添加值和指定位置替换值总结

2.3.1. element给JSONArray添加值。事实上调用的是Java底层boolean java.util.List.add(Object e)的方法添加对象。

2.3.2. element给JSONArray指定位置替换值。事实上调用的是Java底层Object java.util.List.set(int index, Object element)的方法设置对象。

2.3.3. element系列方法都返回JSONArray对象本身, 因此可以进行链式编程(jsonArray.element("").element(true).element(0))。

2.3.4. element系列方法支持添加或替换String、boolean、int、long、double、JSONNull、Collection、Map、JSONObject、Object类型的值。

2.3.5. 可以给JSONArray添加JSONNull、null对象变量(非String类型, 如果是null字符串变量, 添加的是""空字符串)、"null"字符串, 效果是一样的都是"null"字符串。添加空对象常量, 语法错误。

2.4. 例子

2.4.1. 新建JSONArrayElement.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/**
 * JSONArray
 * 1. JSONArray element(String value), 给JSONArray添加String类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 2. JSONArray element(boolean value), 给JSONArray添加boolean类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 3. JSONArray element(int value), 给JSONArray添加int类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 4. JSONArray element(long value), 给JSONArray添加long类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 5. JSONArray element(double value), 给JSONArray添加double类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 6. JSONArray element(JSONNull value), 给JSONArray添加JSONNull类型的值。
 * 7. JSONArray element(Collection value), 给JSONArray添加Collection类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 8. JSONArray element(Map value), 给JSONArray添加Map类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 9. JSONArray element(JSONObject value), 给JSONArray添加JSONObject类型的值。
 * 10. JSONArray element(Object value), 给JSONArray添加Object类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 11. JSONArray element(String value, JsonConfig jsonConfig), 给JSONArray添加String类型的值。传入了一个JsonConfig对象。
 * 12. JSONArray element(Collection value, JsonConfig jsonConfig), 给JSONArray添加Collection类型的值。传入了一个JsonConfig对象。
 * 13. JSONArray element(Map value, JsonConfig jsonConfig), 给JSONArray添加Map类型的值。传入了一个JsonConfig对象。
 * 14. JSONArray element(Object value, JsonConfig jsonConfig), 给JSONArray添加Object类型的值。传入了一个JsonConfig对象。
 *       
 * 15. JSONArray element(int index, String value), 给JSONArray指定位置替换String类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 16. JSONArray element(int index, boolean value), 给JSONArray指定位置替换boolean类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 17. JSONArray element(int index, int value), 给JSONArray指定位置替换int类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 18. JSONArray element(int index, long value), 给JSONArray指定位置替换long类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 19. JSONArray element(int index, double value), 给JSONArray指定位置替换double类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 20. JSONArray element(int index, Collection value), 给JSONArray指定位置替换Collection类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 21. JSONArray element(int index, Map value), 给JSONArray指定位置替换Map类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 22. JSONArray element(int index, Object value), 给JSONArray指定位置替换Object类型的值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 23. JSONArray element(int index, String value, JsonConfig jsonConfig), 给JSONArray指定位置替换String类型的值。传入了一个JsonConfig对象。
 * 24. JSONArray element(int index, Collection value, JsonConfig jsonConfig), 给JSONArray指定位置替换Collection类型的值。传入了一个JsonConfig对象。
 * 25. JSONArray element(int index, Map value, JsonConfig jsonConfig), 给JSONArray指定位置替换Map类型的值。传入了一个JsonConfig对象。
 * 26. JSONArray element(int index, Object value, JsonConfig jsonConfig), 给JSONArray指定位置替换Object类型的值。传入了一个JsonConfig对象。
 *     
 * 27. element给JSONArray添加值。事实上调用的是Java底层boolean java.util.List.add(Object e)的方法添加对象。
 * 28. element给JSONArray指定位置替换值。事实上调用的是Java底层Object java.util.List.set(int index, Object element)的方法设置对象。
 * 29. element系列方法都返回JSONArray对象本身, 因此可以进行链式编程(jsonArray.element("").element(true).element(0))。
 * 30. element系列方法支持添加或替换String、boolean、int、long、double、JSONNull、Collection、Map、JSONObject、Object类型的值。
 * 31. 可以给JSONArray添加JSONNull、null对象变量(非String类型, 如果是null字符串变量, 添加的是""空字符串)、"null"字符串, 效果是一样的都是"null"字符串。添加空对象常量, 语法错误。
 */
public class JSONArrayElement {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
		// null对象变量(非String)
		Object nullObjectVar = null;
		String strNullVar = null;
		
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro") // 添加String类型的值
		.element(true) // 添加boolean类型的值
		.element(5988) // 添加int类型的值
		.element(2601010188703L) // 添加long类型的值
		.element(6.58D) // 添加double类型的值
		.element(mobileColor) // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		.element(isp) // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		.element(mainParam) // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		.element(sensor, new JsonConfig()) // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		.element(netJsonObject) // 添加JSONObject类型的值
		.element(transferFunction) // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		.element("") // JSONArray可以添加""空字符串
		.element(jsonNull) // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		.element(nullObjectVar) // JSONArray可以添加null对象变量(非String类型), 实际上存放的也是"null"字符串
//		.element(null) // JSONArray可以添加空对象常量, 语法错误
		.element("null") // JSONArray可以添加"null"字符串
		.element(strNullVar) // JSONArray可以添加String类型的null对象变量, 实际上存放的是""字符串
		.element(0, "华为P40 Pro") // 给JSONArray指定位置添加值, 替换掉原位置的值
		.element(1, "", new JsonConfig()); // 给JSONArray指定位置 替换String值
		
		System.out.println(jsonArray.toString()); 
	}
}

2.4.2. 运行JSONArrayElement.java

3. add和element给JSONArray添加元素对比

3.1. add给JSONArray添加元素

3.1.1. add给JSONArray添加值, 被当作Object类型添加。

3.1.2. add可以给JSONArray指定位置添加值, 该位置的值以及之后的值向后移动一位。

3.2. element给JSONArray添加元素

3.2.1. element给JSONArray添加值, 支持追加String、boolean、int、long、double、JSONNull、Collection、Map、JSONObject、Object类型的值。

3.2.2. element给JSONArray指定位置添加值, 替换掉原位置的值。

3.3. element的优势

3.3.1. 事实上, 值可以是String, boolean、int、long、double、JSONNull、JSONObject、JSONArray、Object类型的值。element比add方法支持众多的类型。

3.3.2. element返回JSONArray对象本身, 支持链式编程。

4. set方法给JSONArray设置值

4.1. Object set(int index, Object value), 给指定位置设置值, 并返回旧值。json-lib底层, 会创建一个JsonConfig对象使用。

4.2. Object set(int index, Object value, JsonConfig jsonConfig), 给指定位置设置值, 并返回旧值。传入了一个JsonConfig对象。

4.3. 事实上调用的是Java底层Object java.util.List.set(int index, Object element)的方法设置对象。

4.4. 新建JSONArraySet.java

package com.fj.ja;

import net.sf.json.JSONArray;

/**
 * JSONArray
 * 1. Object set(int index, Object value), 给指定位置设置值, 并返回旧值。json-lib底层, 会创建一个JsonConfig对象使用。
 * 2. Object set(int index, Object value, JsonConfig jsonConfig), 给指定位置设置值, 并返回旧值。传入了一个JsonConfig对象。
 * 3. 事实上调用的是Java底层Object java.util.List.set(int index, Object element)的方法设置对象。   
 */
public class JSONArraySet {
	public static void main(String[] args) {
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro").element(true);
		Object oldValue = jsonArray.set(0, false);
		
		System.out.println(oldValue);
		System.out.println(jsonArray.toString());
	}
}

4.5. 运行JSONArraySet.java

5. get方法获得值

5.1. String getString(int index), 获取指定位置String类型的值, 如果类型不匹配会报错。

5.2. boolean getBoolean(int index), 获取指定位置boolean类型的值, 如果类型不匹配会报错。

5.3. int getInt(int index), 获取指定位置int类型的值, 如果类型不匹配会报错。

5.4. long getLong(int index), 获取指定位置long类型的值, 如果类型不匹配会报错。可以接收int类型的值。

5.5. double getDouble(int index), 获取指定位置double类型的值, 如果类型不匹配会报错。

5.6. JSONArray getJSONArray(int index), 获取指定位置JSONArray类型的值, 如果类型不匹配会报错。

5.7. JSONObject getJSONObject(int index), 获取指定位置JSONObject类型的值, 如果类型不匹配会报错。

5.8. Object get(int index), 获取指定位置Object类型的值。可以接收所有类型的值。

5.9. 如果试图获取一个不存在的下标, 会报错。

5.10. 新建JSONArrayGet.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;

/**
 * JSONArray
 * 1. String getString(int index), 获取指定位置String类型的值, 如果类型不匹配会报错。
 * 2. boolean getBoolean(int index), 获取指定位置boolean类型的值, 如果类型不匹配会报错。
 * 3. int getInt(int index), 获取指定位置int类型的值, 如果类型不匹配会报错。
 * 4. long getLong(int index), 获取指定位置long类型的值, 如果类型不匹配会报错。可以接收int类型的值。
 * 5. double getDouble(int index), 获取指定位置double类型的值, 如果类型不匹配会报错。
 * 6. JSONArray	getJSONArray(int index), 获取指定位置JSONArray类型的值, 如果类型不匹配会报错。
 * 7. JSONObject getJSONObject(int index), 获取指定位置JSONObject类型的值, 如果类型不匹配会报错。
 * 8. Object get(int index), 获取指定位置Object类型的值。可以接收所有类型的值。
 * 9. 如果试图获取一个不存在的下标, 会报错。
 */
public class JSONArrayGet {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
				
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro"); // 添加String类型的值
		jsonArray.element(true); // 添加boolean类型的值
		jsonArray.element(5988); // 添加int类型的值
		jsonArray.element(2601010188703L); // 添加long类型的值
		jsonArray.element(6.58D); // 添加double类型的值
		jsonArray.element(mobileColor); // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(isp); // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(mainParam); // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(sensor); // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(netJsonObject); // 添加JSONObject类型的值
		jsonArray.element(transferFunction); // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(jsonNull); // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		
		System.out.println(jsonArray.getString(0)); // 获取指定位置的String类型的值
		System.out.println(jsonArray.getBoolean(1)); // 获取指定位置的boolean类型的值
		System.out.println(jsonArray.getInt(4)); // 获取指定位置的int类型的值
		System.out.println(jsonArray.getLong(3)); // 获取指定位置的long类型的值
		System.out.println(jsonArray.getDouble(4)); // 获取指定位置的double类型的值
		System.out.println(jsonArray.getJSONArray(5)); // 获取指定位置的JSONArray类型的值
		System.out.println(jsonArray.getJSONArray(6));
		System.out.println(jsonArray.getJSONObject(7)); // 获取指定位置的JSONObject类型的值
		System.out.println(jsonArray.get(8)); // 获取指定位置的Object类型的值
		System.out.println(jsonArray.getJSONObject(9));
		System.out.println(jsonArray.getJSONArray(10));
		System.out.println(jsonArray.get(11));
	}
}

5.11. 运行JSONArrayGet.java

6. opt方法获得值

6.1. String optString(int index), 获取指定位置String类型的值。

6.2. boolean optBoolean(int index), 获取指定位置boolean类型的值。

6.3. int optInt(int index), 获取指定位置int类型的值。

6.4. long optLong(int index), 获取指定位置long类型的值。可以接收int类型的值。

6.5. double optDouble(int index), 获取指定位置double类型的值。

6.6. JSONObject optJSONObject(int index), 获取指定位置JSONArray类型的值。

6.7. JSONArray optJSONArray(int index), 获取指定位置JSONObject类型的值。

6.8. Object opt(int index), 获取指定位置Object类型的值。可以接收所有类型的值。

6.9. String optString(int index, String defaultValue), 获取指定位置String类型的值, 可以指定一个String类型的默认值。

6.10. boolean optBoolean(int index, boolean defaultValue), 获取指定位置boolean类型的值, 可以指定一个boolean类型的默认值。

6.11. int optInt(int index, int defaultValue), 获取指定位置int类型的值, 可以指定一个int类型的默认值。

6.12. long optLong(int index, long defaultValue), 获取指定位置long类型的值, 可以指定一个long类型的默认值。可以接收int类型的值。

6.13. double optDouble(int index, double defaultValue), 获取指定位置double类型的值, 可以指定一个double类型的默认值。

6.14. 如果类型不匹配不会报错, 返回该类型的默认值或者使用默认值(相比get获取值更实用)。

6.15. 如果试图获取一个不存在的下标, 不会报错, 返回该类型的默认值或者使用默认值(相比get获取值更实用)。

6.16. 可以给String、int、boolean、double、long类型指定默认值(相比get获取值更实用)。

6.17. 创建JSONArrayOpt.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;

/**
 * JSONArray
 * 1. String optString(int index), 获取指定位置String类型的值。
 * 2. boolean optBoolean(int index), 获取指定位置boolean类型的值。
 * 3. int optInt(int index), 获取指定位置int类型的值。
 * 4. long optLong(int index), 获取指定位置long类型的值。可以接收int类型的值。
 * 5. double optDouble(int index), 获取指定位置double类型的值。
 * 6. JSONObject optJSONObject(int index), 获取指定位置JSONArray类型的值。
 * 7. JSONArray	optJSONArray(int index), 获取指定位置JSONObject类型的值。
 * 8. Object opt(int index), 获取指定位置Object类型的值。可以接收所有类型的值。
 * 9. String optString(int index, String defaultValue), 获取指定位置String类型的值, 可以指定一个String类型的默认值。
 * 10. boolean optBoolean(int index, boolean defaultValue), 获取指定位置boolean类型的值, 可以指定一个boolean类型的默认值。
 * 11. int optInt(int index, int defaultValue), 获取指定位置int类型的值, 可以指定一个int类型的默认值。
 * 12. long	optLong(int index, long defaultValue), 获取指定位置long类型的值, 可以指定一个long类型的默认值。可以接收int类型的值。
 * 13. double optDouble(int index, double defaultValue), 获取指定位置double类型的值, 可以指定一个double类型的默认值。
 * 14. 如果类型不匹配不会报错, 返回该类型的默认值或者使用默认值(相比get获取值更实用)。
 * 15. 如果试图获取一个不存在的下标, 不会报错, 返回该类型的默认值或者使用默认值(相比get获取值更实用)。
 * 16. 可以给String、int、boolean、double、long类型指定默认值(相比get获取值更实用)。
 */
public class JSONArrayOpt {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
				
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro"); // 添加String类型的值
		jsonArray.element(true); // 添加boolean类型的值
		jsonArray.element(5988); // 添加int类型的值
		jsonArray.element(2601010188703L); // 添加long类型的值
		jsonArray.element(6.58D); // 添加double类型的值
		jsonArray.element(mobileColor); // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(isp); // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(mainParam); // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(sensor); // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(netJsonObject); // 添加JSONObject类型的值
		jsonArray.element(transferFunction); // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(jsonNull); // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		
		System.out.println(jsonArray.optString(0, "")); // 获取指定位置的String类型的值, 并指定""空字符串为默认值
		System.out.println(jsonArray.optBoolean(1, false)); // 获取指定位置的boolean类型的值, 并指定false为默认值
		System.out.println(jsonArray.optInt(2, 0)); // 获取指定位置的int类型的值, 并指定0为默认值
		System.out.println(jsonArray.optLong(3, 0L)); // 获取指定位置的long类型的值, 并指定0L为默认值
		System.out.println(jsonArray.optDouble(4, 0.0D)); // 获取指定位置的double类型的值, 并指定0.0D为默认值
		System.out.println(jsonArray.optJSONArray(5)); // 获取指定位置的JSONArray类型的值
		System.out.println(jsonArray.optJSONArray(6));
		System.out.println(jsonArray.optJSONObject(7)); // 获取指定位置的JSONObject类型的值
		System.out.println(jsonArray.opt(8)); // 获取指定位置的Object类型的值
		System.out.println(jsonArray.optJSONObject(9));
		System.out.println(jsonArray.optJSONArray(10));
		System.out.println(jsonArray.opt(11));
	}
}

6.18. 运行JSONArrayOpt.java

7. discard方法丢弃掉一个元素

7.1. JSONArray discard(int index), 根据下标丢弃掉一个元素, 只要下标存在可以丢弃任何类型。并返回原JSONArray对象。

7.2. JSONArray discard(Object o)根据对象丢弃掉一个元素, 可以丢弃String、boolean、int(转成Integer)、long、double、JSONNull、Collection、Map、JSONObject类型, 丢弃不掉数组、JavaBean类型。并返回原JSONArray对象。

7.3. 创建JSONArrayDiscard.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;

/**
 * JSONArray
 * 1. JSONArray	discard(int index), 根据下标丢弃掉一个元素, 只要下标存在可以丢弃任何类型。并返回原JSONArray对象。
 * 2. JSONArray	discard(Object o)根据对象丢弃掉一个元素, 可以丢弃String、boolean、int(转成Integer)、long、double、JSONNull、Collection、Map、JSONObject类型, 
 * 丢弃不掉数组、JavaBean类型。并返回原JSONArray对象。
 */
public class JSONArrayDiscard {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
				
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro"); // 添加String类型的值
		jsonArray.element(true); // 添加boolean类型的值
		jsonArray.element(5988); // 添加int类型的值
		jsonArray.element(2601010188703L); // 添加long类型的值
		jsonArray.element(6.58D); // 添加double类型的值
		jsonArray.element(mobileColor); // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(isp); // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(mainParam); // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(sensor); // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(netJsonObject); // 添加JSONObject类型的值
		jsonArray.element(transferFunction); // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(jsonNull); // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		
		System.out.println(jsonArray);
		
		// 根据对象丢弃掉一个元素, 可以丢弃String、boolean、int(转成Integer)、long、double、JSONNull、Collection、Map、JSONObject类型, 丢弃不掉数组、JavaBean类型。
		JSONArray objRemove = jsonArray.discard(transferFunction); 
		JSONArray idxRemove = jsonArray.discard(5); // 根据下标丢弃掉一个元素, 只要下标存在可以丢弃任何类型
		
		System.out.println(jsonArray);
		System.out.println((jsonArray == idxRemove) + " " + (jsonArray == objRemove) + " " + (idxRemove == objRemove));
	}
}

7.4. 运行JSONArrayDiscard.java

8. remove方法删除一个值

8.1. Object remove(int index), 根据下标删除一个元素, 并返回删除的元素, 只要下标存在可以删除任何类型。

8.2. boolean remove(Object o), 根据对象删除一个对象, 并返回是否删除成功/失败, 可以删除String、boolean、int(转成Integer)、long、double、JSONNull、Collection、Map、JSONObject类型, 删除不掉数组、JavaBean类型。

8.3. boolean removeAll(Collection collection), 根据集合删除元素, 并返回是否删除成功/失败, 只要删除成功集合中的一个元素就返回成功。json-lib底层, 会创建一个JsonConfig对象使用。事实上调用的是Java底层boolean java.util.List.removeAll(Collection c)的方法删除集合。值得一提的是它可以删除数组、JavaBean类型。

8.4. boolean removeAll(Collection collection, JsonConfig jsonConfig), 根据集合删除元素, 并返回是否删除成功/失败, 只要删除成功集合中的一个元素就返回成功。传入了一个JsonConfig对象。事实上调用的是Java底层boolean java.util.List.removeAll(Collection c)的方法删除集合。

8.5. remove方法相比discard更实用。

8.6. 创建JSONArrayRemove.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/**
 * JSONArray
 * 1. Object remove(int index), 根据下标删除一个元素, 并返回删除的元素, 只要下标存在可以删除任何类型。
 * 2. boolean remove(Object o), 根据对象删除一个对象, 并返回是否删除成功/失败, 可以删除String、boolean、int(转成Integer)、long、double、JSONNull、Collection、Map、JSONObject类型, 删除不掉数组、JavaBean类型。
 * 3. boolean removeAll(Collection collection), 根据集合删除元素, 并返回是否删除成功/失败, 只要删除成功集合中的一个元素就返回成功。json-lib底层, 会创建一个JsonConfig对象使用。
 * 事实上调用的是Java底层boolean java.util.List.removeAll(Collection c)的方法删除集合。值得一提的是它可以删除数组、JavaBean类型。
 * 4. boolean removeAll(Collection collection, JsonConfig jsonConfig), 根据集合删除元素, 并返回是否删除成功/失败, 只要删除成功集合中的一个元素就返回成功。传入了一个JsonConfig对象。
 * 事实上调用的是Java底层boolean java.util.List.removeAll(Collection c)的方法删除集合。
 * 5. remove方法相比discard更实用。
 */
public class JSONArrayRemove {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
				
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro"); // 添加String类型的值
		jsonArray.element(true); // 添加boolean类型的值
		jsonArray.element(5988); // 添加int类型的值
		jsonArray.element(2601010188703L); // 添加long类型的值
		jsonArray.element(6.58D); // 添加double类型的值
		jsonArray.element(mobileColor); // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(isp); // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(mainParam); // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(sensor); // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(netJsonObject); // 添加JSONObject类型的值
		jsonArray.element(transferFunction); // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(jsonNull); // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		
		System.out.println(jsonArray);
		
		Object obj = jsonArray.remove(0); // 根据下标删除一个元素, 并返回删除的元素, 只要下标存在可以删除任何类型
		// 根据对象删除一个对象, 并返回是否删除成功, 可以删除String、boolean、int(转成Integer)、long、double、JSONNull、Collection、Map、JSONObject类型, 删除不掉数组、JavaBean类型。
		boolean deleteResult = jsonArray.remove(mainParam); 
		
		System.out.println(jsonArray);
		System.out.println(obj);
		System.out.println(deleteResult);
		
		System.out.println(jsonArray.removeAll(Arrays.asList(sensor, mobileColor)));;
		System.out.println(jsonArray);
		
		System.out.println(jsonArray.removeAll(Arrays.asList(netJsonObject, jsonNull), new JsonConfig()));;
		System.out.println(jsonArray);
	}
}

8.7. 运行JSONArrayRemove.java

9. iterator方法

9.1. Iterator iterator()方法返回JSONArray的迭代器。

9.2. 创建JSONArrayIterator.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;

/**
 * JSONArray
 * 1. Iterator iterator()方法返回JSONArray的迭代器。
 */
public class JSONArrayIterator {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
				
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element("HUAWEI P40 Pro"); // 添加String类型的值
		jsonArray.element(true); // 添加boolean类型的值
		jsonArray.element(5988); // 添加int类型的值
		jsonArray.element(2601010188703L); // 添加long类型的值
		jsonArray.element(6.58D); // 添加double类型的值
		jsonArray.element(mobileColor); // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(isp); // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(mainParam); // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(sensor); // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(netJsonObject); // 添加JSONObject类型的值
		jsonArray.element(transferFunction); // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(jsonNull); // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		
		Iterator<?> it = jsonArray.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

9.3. 运行JSONArrayIterator.java

10. contains方法

10.1. boolean contains(Object o), 检查JSONArray是否包含某对象, 如果包含返回true, 反之返回false。json-lib底层, 会创建一个JsonConfig对象使用。事实上调用的是Java底层boolean java.util.List.contains(Object o)的包含方法。

10.2. boolean contains(Object o, JsonConfig jsonConfig), 检查JSONArray是否包含某对象, 如果包含返回true, 反之返回false。并指定一个JsonConfig。事实上调用的是Java底层boolean java.util.List.contains(Object o)的包含方法。

10.3. boolean containsAll(Collection collection), 检查JSONArray是否包含集合的所有元素, 如果都包含返回true, 反之返回false。json-lib底层, 会创建一个JsonConfig对象使用。事实上调用的是Java底层boolean java.util.List.containsAll(Collection c)的包含方法。

10.4. boolean containsAll(Collection collection, JsonConfig jsonConfig), 检查JSONArray是否包含集合的所有元素, 如果都包含返回true, 反之返回false。并指定一个JsonConfig。事实上调用的是Java底层boolean java.util.List.containsAll(Collection c)的包含方法。

10.5. 创建JSONArrayContains.java

package com.fj.ja;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/**
 * JSONArray
 * 1. boolean contains(Object o), 检查JSONArray是否包含某对象, 如果包含返回true, 反之返回false。json-lib底层, 会创建一个JsonConfig对象使用。
 * 事实上调用的是Java底层boolean java.util.List.contains(Object o)的包含方法。
 * 2. boolean contains(Object o, JsonConfig jsonConfig), 检查JSONArray是否包含某对象, 如果包含返回true, 反之返回false。并指定一个JsonConfig。
 * 事实上调用的是Java底层boolean java.util.List.contains(Object o)的包含方法。
 * 3. boolean containsAll(Collection collection), 检查JSONArray是否包含集合的所有元素, 如果都包含返回true, 反之返回false。json-lib底层, 会创建一个JsonConfig对象使用。
 * 事实上调用的是Java底层boolean java.util.List.containsAll(Collection c)的包含方法。
 * 4.  boolean containsAll(Collection collection, JsonConfig jsonConfig), 检查JSONArray是否包含集合的所有元素, 如果都包含返回true, 反之返回false。
 * 并指定一个JsonConfig。事实上调用的是Java底层boolean java.util.List.containsAll(Collection c)的包含方法。
 */
public class JSONArrayContains {
	public static void main(String[] args) {
		// 数组
		String[] mobileColor = {"亮黑色", "冰霜银", "零度白", "深海蓝", "晨曦金"};
		// 集合
		List<String> isp = new ArrayList<String>(); // ISP网络服务提供商
		isp.add("移动");
		isp.add("联通");
		isp.add("电信");	
		// Map
		Map<String, String> mainParam = new HashMap<String, String>();
		mainParam.put("runtimeMemory", "8GB");
		mainParam.put("mobileMemory", "128GB");
		mainParam.put("CPUType", "HUAWEI Kirin 990 5G(麒麟990 5G)");
		mainParam.put("CPUCount", "八核");
		// Java Bean
		Sensor sensor = new Sensor();
		sensor.setWeightSensor(true);
		sensor.setFingerSensor(true);
		sensor.setOtherSensor("姿态感应器、色温传感器");	
		// JSONObject
		JSONObject netJsonObject = new JSONObject()
				.accumulate("5G", "移动5G(NR)/联通5G(NR)/电信5G(NR)")
				.accumulate("4G", "移动/联通/电信4G主副卡 支持 TD-LTE/LTE FDD")
				.accumulate("3G", "主卡: 联通3G(WCDMA)/电信3G(CDMA 2000); 副卡: 联通3G(WCDMA)")
				.accumulate("2G", "主卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X); 副卡: 移动2G(GSM)/联通2G(GSM)/电信2G(CDMA 1X)");
		// JSONArray
		JSONArray transferFunction = new JSONArray();
		transferFunction.element("NFC").element("WLAN");
		// JSONNull
		JSONNull jsonNull = JSONNull.getInstance();
				
		// 创建一个空的JSONArray对象
		JSONArray jsonArray = new JSONArray();
		jsonArray.element(mobileColor); // 添加数组类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(isp); // 添加集合类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(mainParam); // 添加Map类型的值, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(sensor); // 添加JavaBean对象类型的值, 被当作Object类型添加, 添加到JSONArray里面是JSONObject类型的值
		jsonArray.element(netJsonObject); // 添加JSONObject类型的值
		jsonArray.element(transferFunction); // 添加JSONArray类型的值, 被当作Collection类型添加, 添加到JSONArray里面是JSONArray类型的值
		jsonArray.element(jsonNull); // 添加JSONNull类型的值, 添加到JSONArray里面是"null"字符串
		
		System.out.println(jsonArray.contains(mobileColor)); // jsonArray是否包含mobileColor的对象
		System.out.println(jsonArray.contains(mainParam, new JsonConfig())); // jsonArray是否包含mainParam的对象
		
		System.out.println(jsonArray.containsAll(isp)); // jsonArray是否包含isp集合的所有元素
		System.out.println(jsonArray.containsAll(Arrays.asList(isp, sensor)));
	}
}

10.6. 运行JSONArrayContains.java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值