1. 程式人生 > >MongoDB的學習與應用三:MongoDB中必須要懂的JSON

MongoDB的學習與應用三:MongoDB中必須要懂的JSON

import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class JsonUtils {

	/**
	 * String2Json
	 * 
	 * @param str
	 * @return
	 */
	private static String string2Json(String str){
		StringBuilder sb = new StringBuilder();//(str.length()+20);
		sb.append("\"");
		for(int i=0;i<str.length();i++){
			char c = str.charAt(i);
			switch (c) {
			case '\"':
				sb.append("\\\"");
				break;
			case '\\':
				sb.append("\\\\");
				break;
			case '/':
				sb.append("\\/");
				break;
			case '\b':
				sb.append("\\b");
				break;
			case '\f':
				sb.append("\\f");
				break;
			case '\n':
				sb.append("\\n");
				break;
			case '\r':
				sb.append("\\r");
				break;
			case '\t':
				sb.append("\\t");
				break;
			default:
				sb.append(c);
				break;
			}
		}
		
		sb.append("\"");
		return sb.toString();
	}
	
	/**
	 * Number2Json
	 * 
	 * @param number
	 * @return
	 */
	private static String number2Json(Number number){
		return number.toString();
	}
	
	/**
	 * Boolean2Json
	 * 
	 * @param bool
	 * @return
	 */
	private static String boolean2Json(Boolean bool){
		return bool.toString();
	}
	
	/**
	 * Map2Json
	 * 
	 * @param map
	 * @return
	 */
	private static String map2Json(Map<String,Object> map){
		if(map.isEmpty()){
			return "{}";
		}
		StringBuilder sb = new StringBuilder();
		sb.append('{');
		Set<String> keys = map.keySet();
		for(String key:keys){
			Object value = map.get(key);
			sb.append('\"');
			sb.append(key);
			sb.append('\"');
			sb.append(':');
			sb.append(toJson(value));
//			sb.append('}');
			sb.append(',');
		}
		sb.setCharAt(sb.length()-1, '}');
		return sb.toString();
	}
	
	/**
	 * Array2Json
	 * 
	 * @param array
	 * @return
	 */
	private static String array2Json(Object[] array){
		if(array.length==0)
			return "[]";
		StringBuilder sb = new StringBuilder(array.length+20);
		sb.append('[');
		for(Object obj:array){
			sb.append(toJson(obj));
			sb.append(',');
		}
		sb.setCharAt(sb.length()-1, ']');
		return sb.toString();
	}
	
	
	private static String toJson(Object obj){
		if(obj == null)
			return "null";
		if(obj instanceof Number)
			return number2Json((Number) obj);
		if(obj instanceof Boolean)
			return boolean2Json((Boolean) obj);
		if(obj instanceof String)
			return string2Json((String)obj);
		if(obj instanceof Object[])
			return array2Json((Object[]) obj);
		
		return "error:"+obj.toString();
	}

	
	public static void main(String[] args) {
		String str = "abc\t,]";
		System.out.println("test string2Json:"+string2Json(str));
		
		Object[] objArray = new Object[]{"2","3"};
		System.out.println("test arry2Json:"+toJson(objArray));
		
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("a", 1);
		map.put("b", true);
		map.put("c", objArray );
		System.out.println("test map2Json:"+map2Json(map));
		
	}
	
}
測試結果:
test string2Json:"abc\t,]"
test arry2Json:["2","3"]
test map2Json:{"b":true,"c":["2","3"],"a":1}

    以上用Java實現簡單JSONUtils工具包,當然這裡並沒有處理複雜的Java物件以及巢狀引用的情況,也可以在Introducing JSON上面瞭解更多的JSON工具包及應用。

相關推薦

MongoDB學習應用MongoDB必須要JSON

import java.util.HashMap; import java.util.Map; import java.util.Set; public class JsonUtils { /** * String2Json * * @param str * @return */

MongoDB學習應用熟悉MongoDB Shell下常用命令

> db.users.find().limit(){ "_id" : ObjectId("52f88957efda1e17f2ac473d"), "name" : "user1" }{ "_id" : ObjectId("52f88d78efda1e17f2ac473e"), "name" : "use

MongoDB學習應用安裝並簡單測試MongoDB

Document DatabaseA record in MongoDB is a document, which is a data structure composed of field and value pairs. MongoDB documents are similar to JSON obje

[linux][MongoDB] mongodb學習(一)MongoDB安裝、管理工具、

ole ont mon mkdir man 管理工具 tar end 認證 參考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安裝完美實現! 1. mongoDB安裝、啟動、關閉   1.1

CAN匯流排學習記錄之匯流排主動錯誤和被動錯誤的通俗解釋

首先建議把廣泛使用的“主動錯誤”和“被動錯誤”概念換成“主動報錯”和“被動報錯”。 1. 主動報錯站點 只要檢查到錯誤,它立即“主動地”發出錯標識。所謂“出錯標識“,它本身就是一個“錯誤的位序列”(連續的6個顯性位,不滿足 CAN 協議的“最多5個連續的同性位”要求),目的是“主動地”告訴大家:即使你們沒

MongoDB學習筆記()--MongoDB的C#驅動的基本使用

官方C#驅動:https://github.com/mongodb/mongo-csharp-driver/releases 在使用C#驅動時,要在專案中新增”MongoDB.Bson.dll”和”MongoDB.Driver.dll”的引用。同時要在程式碼中

MongoDB學習(一)MongoDB 環境的搭建

安裝mongodb   安裝mongodb一般指構建核心的資料伺服器mongodb。mongodb 可以作為單個伺服器 、主從節點、 副本集的成員還可以當作片。通常就是所需要的mongodb 程序。 版本   mongoDB版本號(x.y.z):偶數版本是穩定版, 奇數是開發版。最初版本的開發分支是

glib學習筆記之——GLib核心應用支援glib IO Channels 理解

原文連結 GUI系統都是基於事件驅動的,其中必有一個事件迴圈過程來獲取和處理事件。gtk也一樣,gtk的事件迴圈過程是由glib提供的,而iochannel是glib中把IO事件整合到事件的一種手段。 iochannel可以把開發者指定的發生在 檔案描述符、管道和socke

MongoDB學習筆記】6資料備份(mongodump)恢復(mongorestore)流程

備份資料 要備份某個DB中的全部Collection,相當於備份RDBMS中某個Schema下的全部Table。比如想要備份這個DB: > show dbs admin 0.000GB config 0.000GB local 0.000

MongoDB初探系列之四MongoDBJava共舞

ever 文件 basic query find man mongodb next() 入學 因為版本號不同,可能API也有所不同。本次學習用的是3.0版本號。 1、使用的mongodb的jdbc驅動版本號為:mongo-java-driver-3.0.0.jar

Python爬蟲學習==>第二章MongoDB環境配置

擴展 建立 body 網絡 dash blog 虛擬 bson 階段   學習目的: MongoDB的安裝 正式步驟 (VMWare 虛擬機上無法安裝這個MongoDB的自啟動服務,如果你能辦到,請多賜教) Step1:MongoDB的簡介

USB開裝置開發學習USB的端點詳細瞭解

原文:https://blog.csdn.net/go_str/article/details/80985717    前言     端點在實際的USB通訊過程種的具體作用與含義十分重要,但是有些難以理解,自己整理一些知識作為備忘。 (

ArcGIS for Android 100.3的學習應用) 實現地圖新增自定義指北針

圖為高德地圖實現指北針的效果,那麼ArcGIS如何實現呢? 實現方式: 新增地圖的旋轉監聽: map.addMapRotationChangedListener(new MapRotationChangedListener() { @Override

學習MongoDB--(2-1)MongoDB入門(概念簡介和啟動)

開始進入正式學習使用MongoDB的階段了,首先還是詳細介紹一下MongoDB的一些概念吧: 1》 文件:這個是MongoDB中資料的基本單元,非常類似於關係型資料庫的行,但比傳統行能表示的資訊複雜很多。 2》 集合:這個在MongoDB中代表一組文件,類似於關係型資料庫中

MongoDB學習之路 (五)更新操作符(Update Operators).2nd

  通常文件只會有一部分要更新。利用原子的更新修改器,可以使得這種部分更新極為髙效。更新修改器是種特殊的鍵,用來指定複雜的更新操作,比如調整、增加或者刪除鍵,還可能是運算元組或者內嵌文件。 欄位更新操作符 Field Update Operators   $set   "$set"用來指定一個鍵的值。如果

深度學習框架TensorFlow學習應用)——使用交叉熵作為代價函式

二次代價函式(quadratic cost): 其中,C表示代價函式,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。 例如: 假如我們使用梯度下降法(Gradient descent)來調整權值引數的大小,權值w和偏置b的梯

html5學習筆記canvas平移,縮放,旋轉等影象變換問題

1,儲存與恢復問題 關鍵字:save / restore save指儲存save之前的canvas狀態,restore恢復save儲存的canvas狀態。舉個例子我想在canvas中隔一秒顯示一個圖片,那我可以先用save指令儲存空白的canvas,然後在顯示一張圖片之後r

GitHub學習(四)Phpstorm的git使用(2)--拉取工程composer使用

    之前我在一臺電腦上將一份不完整的工程儲存在github上,現在我回到家中,換了一臺電腦,接下來就是要用另一臺電腦拉取github中的工程,並用composer把整個工程的依賴檔案什麼亂七八糟的檔案都下下好。     1.首先開啟phpstorm,按圖

【深度學習框架Caffe學習應用】第課 將圖片資料轉化為LMDB資料``

1.將圖片資料轉化為LMDB資料 第一步:建立圖片檔案列表清單,一般為一個txt檔案,一行一張圖片 我在caffe/data/目錄下新建一個test_data的資料夾,裡面放訓練集及資料集

深度學習入門教程UFLDL學習實驗筆記主成分分析PCA白化whitening

主成分分析與白化是在做深度學習訓練時最常見的兩種預處理的方法,主成分分析是一種我們用的很多的降維的一種手段,通過PCA降維,我們能夠有效的降低資料的維度,加快運算速度。而白化就是為了使得每個特徵能有同樣的方差,降低相鄰畫素的相關性。 主成分分析PCA 第一步:首先我們需要獲取旋轉矩陣U,為了實現這一目的,我