天天看點

建構和解析JSONObject、JSONArray

最近用到JSONObject,在此我們記錄一下

1. 在項目中先導入依賴的jar包(一共6個依賴包),此處使用的是 net.sf.json
<dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
    </dependency>
    <!-- 如果此依賴包報錯可以注釋掉-->
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <!-- <version>1.9.3</version>-->
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.4</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>net.sf.ezmorph</groupId>
        <artifactId>ezmorph</artifactId>
        <version>1.0.4</version>
    </dependency>
           
2. 直接上代碼
package test;

import java.util.Iterator;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonObjectAndJsonArrayTest {

	public static void main(String[] args) {
	    //  \ 是為了轉譯雙引号 
		String json = "{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\"}";
		// 解析jsonObject測試
		parseJsonObjectTest(json);
		// 解析jsonArray測試
		parseJsonArrayTest();
		// 建構jsonObject 和jsonArray 測試
		buildJsonObjcetTest();
	}
	/**
	 * 解析JSON串
	 */
	@SuppressWarnings({ "rawtypes", "static-access" })
	public static  void parseJsonObjectTest(String json) {
		JSONObject jsonObject = new JSONObject().fromObject(json);
		// 也可以先擷取到json中所有的key值
		// Set keySet = jsonObject.keySet();
		Set entrySet = jsonObject.entrySet();
		Iterator iterator = entrySet.iterator();
		while(iterator.hasNext()) {
			Object next = iterator.next();
			String entry = next.toString();
			System.out.println(entry); //輸出結果 key1=value1、key2=value2、key3=value3
		}
	}

	/**
	 * 解析JSONArray測試
	 */
	public static  void parseJsonArrayTest() {
		String json = "[{\"key10\":\"value10\",\"key20\":\"value20\"},{\"key30\":\"value30\",\"key40\":\"value40\"}]";
		//1. 把字元串類型的json數組對象轉化JSONArray
		JSONArray jsonArray = new JSONArray().fromObject(json);
		for (int i = 0; i < jsonArray.size(); i++) {
			JSONObject jsonArray2 = jsonArray.getJSONObject(i);
			System.out.println(jsonArray2); //輸出結果 {"key10":"value10","key20":"value20"}、{"key30":"value30","key40":"value40"}
			parseJsonObjectTest(jsonArray2.toString());// key10=value10、key20=value20 、...
		}
	}

	/**
	 * 建構JSONObject 和 JSONArray
	 *   一個或多個JSONObject構成一個JSONArray
	 */
	public static  void buildJsonObjcetTest() {
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("key1", "value1");
		jsonObject.put("key2", "value2");
		System.out.println("建構的jsonObject: "+jsonObject); //  {"key1":"value1","key2":"value2"}
		JSONObject jsonObject2 = new JSONObject();
		jsonObject2.put("key3", "value3");
		jsonObject2.put("key4", "value4");
		JSONArray jsonArray = new JSONArray();
		jsonArray.add(jsonObject);
		jsonArray.add(jsonObject2);
		System.out.println("建構的jsonArray: "+jsonArray);// [{"key1":"value1","key2":"value2"},{"key3":"value3","key4":"value4"}]
	}

}
           

如有不足之處多多指正!!!