1. 程式人生 > >處理json資料格式各種轉換

處理json資料格式各種轉換

    JSON的全稱是”JavaScript Object Notation”,意思是JavaScript物件表示法,JSON是特別重要的輕量級的資料交換格式,比XML傳輸資料更加方便,它是基於JavaScript的一個子集,是用嚴格的JavaScript物件表示法表示結構化的資料。 JSON只是一種資料格式的規範,因此準確的叫法應該是:使用JSON格式的JS物件。

語法:

  1. 資料在名稱/值對中
  2. 資料由逗號分隔
  3. 花括號儲存物件
  4. 方括號儲存陣列    

JSON 資料的書寫格式是:名稱/值對,名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在後面(同樣在雙引號中),中間用冒號隔開。

json物件就是json的值,基本要符合以下規則

  • 複合型別的值只能是陣列或物件,不能是函式、正則表示式物件、日期物件。
  • 簡單型別的值只有四種:字串、數值(必須以十進位制表示)、布林值和null
  • 字串必須使用雙引號表示,不能使用單引號
  • 物件的鍵名必須放在雙引號裡面
  • 陣列或物件最後一個成員的後面,不能加逗號

JSON有2個靜態方法:JSON.parse用來將JSON字串反序列化成物件,JSON.stringify用來將物件序列化成JSON字串

// 這是JSON字串
var strJson = '{ "prop": "val" }';
// 將字串反序列化成物件
var objJson = JSON.parse(strJson);
// 將物件序列化成JSON字串
var otherStrJson= JSON.stringify(objJson);

處理json資料格式的工具類:

package com.itheima.utils;

import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.xml.XMLSerializer;

/**
 * 處理json資料格式的工具類
 * 
 */
public class JsonUtil {
	/**
	 * 將陣列轉換成String型別的JSON資料格式
	 * 
	 * @param objects
	 * @return
	 */
	public static String array2json(Object[] objects){
		
		JSONArray jsonArray = JSONArray.fromObject(objects);
		return jsonArray.toString();
		
	}
	
	/**
	 * 將list集合轉換成String型別的JSON資料格式
	 * 
	 * @param list
	 * @return
	 */
	public static String list2json(List list){
		
		JSONArray jsonArray = JSONArray.fromObject(list);
		return jsonArray.toString();
		
	}
	
	/**
	 * 將map集合轉換成String型別的JSON資料格式
	 * 
	 * @param map
	 * @return
	 */
	public static String map2json(Map map){
		
		JSONObject jsonObject = JSONObject.fromObject(map);
		return jsonObject.toString();
		
	}
	
	/**
	 * 將Object物件轉換成String型別的JSON資料格式
	 * 
	 * @param object
	 * @return
	 */
	public static String object2json(Object object){
		
		JSONObject jsonObject = JSONObject.fromObject(object);
		return jsonObject.toString();
		
	}
	
	/**
	 * 將XML資料格式轉換成String型別的JSON資料格式
	 * 
	 * @param xml
	 * @return
	 */
	public static String xml2json(String xml){
		
		JSONArray jsonArray = (JSONArray) new XMLSerializer().read(xml);
		return jsonArray.toString();
		
	}
	
	/**
	  * 除去不想生成的欄位(特別適合去掉級聯的物件)
	  *
	  * @param excludes
	  * @return
	*/
	public static JsonConfig configJson(String[] excludes) {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setExcludes(excludes);
		jsonConfig.setIgnoreDefaultExcludes(true);
		jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
		return jsonConfig;
	}
	
}