0001 // 0002 // JsonSerializer.swift 0003 // JsonSerializer 0004 // 0005 // Created by Fuji Goro on 2014/09/18. 0006 // Copyright (c) 2014年 Fuji Goro. All rights reserved. 0007 // 0008 0009 public protocol JsonSerializer{ 0010 init
Json.swift:84 private var serializer: JsonSerializer.Type {Json.swift:198 public func serialize(serializer: JsonSerializer) -> String {JsonSerializer.swift:14 internal class DefaultJsonSerializer: JsonSerializer {() 0011 func serialize
Json.swift:95 return style.serializer.init().serialize(self)(_: Json) -> String 0012 } 0013 0014 internal class DefaultJsonSerializer
Json.swift:95 return style.serializer.init().serialize(self)Json.swift:199 return serializer.serialize(self): JsonSerializer { 0015 0016 required init
Json.swift:87 return DefaultJsonSerializer.selfJson.swift:189 return serialize(DefaultJsonSerializer())JsonSerializer.swift:65 internal class PrettyJsonSerializer: DefaultJsonSerializer {() {} 0017 0018 internal func serialize(json: Json) -> String { 0019 switch json { 0020 case .NullValue: 0021 return "null" 0022 case .BooleanValue(let b): 0023 return b ? "true" : "false" 0024 case .NumberValue(let n): 0025 return serializeNumber(n) 0026 case .StringValue(let s): 0027 return escapeAsJsonString(s) 0028 case .ArrayValue(let a): 0029 return serializeArray(a) 0030 case .ObjectValue(let o): 0031 return serializeObject(o) 0032 } 0033 } 0034 0035 func serializeNumber
Json.swift:189 return serialize(DefaultJsonSerializer())JsonSerializer.swift:69 super.init()(n: Double) -> String { 0036 if n == Double(Int64(n)) { 0037 return Int64(n).description 0038 } else { 0039 return n.description 0040 } 0041 } 0042 0043 func serializeArray
JsonSerializer.swift:25 return serializeNumber(n)(array: [Json]) -> String { 0044 var string = "[" 0045 string += array 0046 .map { $0.serialize(self) } 0047 .joinWithSeparator(",") 0048 return string + "]" 0049 } 0050 0051 func serializeObject
JsonSerializer.swift:29 return serializeArray(a)(object: [String : Json]) -> String { 0052 var string = "{" 0053 string += object 0054 .map { key, val in 0055 let escapedKey = escapeAsJsonString(key) 0056 let serializedVal = val.serialize(self) 0057 return "\(escapedKey):\(serializedVal)" 0058 } 0059 .joinWithSeparator(",") 0060 return string + "}" 0061 } 0062 0063 } 0064 0065 internal class PrettyJsonSerializer
JsonSerializer.swift:31 return serializeObject(o): DefaultJsonSerializer { 0066 private var indentLevel
Json.swift:89 return PrettyJsonSerializer.selfJson.swift:193 return serialize(PrettyJsonSerializer())= 0 0067 0068 required init
JsonSerializer.swift:73 indentLevel += 1JsonSerializer.swift:75 indentLevel -= 1JsonSerializer.swift:91 indentLevel += 1JsonSerializer.swift:93 indentLevel -= 1JsonSerializer.swift:113 return Array(1...indentLevel)() { 0069 super.init() 0070 } 0071 0072 override internal func serializeArray(array: [Json]) -> String { 0073 indentLevel += 1 0074 defer { 0075 indentLevel -= 1 0076 } 0077 0078 let indentString = indent() 0079 0080 var string = "[\n" 0081 string += array 0082 .map { val in 0083 let serialized = val.serialize(self) 0084 return indentString + serialized 0085 } 0086 .joinWithSeparator(",\n") 0087 return string + " ]" 0088 } 0089 0090 override internal func serializeObject(object: [String : Json]) -> String { 0091 indentLevel += 1 0092 defer { 0093 indentLevel -= 1 0094 } 0095 0096 let indentString = indent() 0097 0098 var string = "{\n" 0099 string += object 0100 .map { key, val in 0101 let escapedKey = escapeAsJsonString(key) 0102 let serializedValue = val.serialize(self) 0103 let serializedLine = "\(escapedKey): \(serializedValue)" 0104 return indentString + serializedLine 0105 } 0106 .joinWithSeparator(",\n") 0107 string += " }" 0108 0109 return string 0110 } 0111 0112 func indent
Json.swift:193 return serialize(PrettyJsonSerializer())() -> String { 0113 return Array(1...indentLevel) 0114 .map { _ in " " } 0115 .joinWithSeparator("") 0116 } 0117 } 0118
JsonSerializer.swift:78 let indentString = indent()JsonSerializer.swift:96 let indentString = indent()