         return JSONValueNull()
     }
     
+    /// 文字列からJSONデータを読み込む
+    /// - parameter string 読み込む文字列
+    /// - returns: 文字列を表すJSONデータ
     private class func deserializeString(string: NSString) -> JSONValue {
         return JSONValueString(value: String(string))
     }
     
+    /// 値からJSONデータを読み込む
+    /// - parameter number 読み込む値
+    /// - returns: 値を表すJSONデータ
+    ///   読み込む値に応じて、整数、浮動小数点数、真理値を格納する
     private class func deserializeNumber(number: NSNumber) -> JSONValue {
         guard let objcType = String.fromCString(number.objCType) else {
             return JSONValueNull()

        return deserializeWith(data: data)
    }
    
    private class func deserializeWith(data data: NSData) -> JSONValue {
        guard let jsonObject = try? NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) else {
            return JSONValueNull()

    var debugDescription: String { return stringValue }
}

// MARK: - JSONValueObject

/// オブジェクトを表すJSONデータ
private struct JSONValueObject : JSONValue {
    let dataType: JSONDataType = .Object
    
