         self.value = value
     }
     public init<S : Sequence>(_ elements: S) {
-        self.value = elements.map { Json.unwrap($0) }
+        self.value = elements.map { Json.unwrap($0) ?? NSNull() }
     }
     public init(_ elements: [String: Any]) {
         var dictionary = [String: Any](minimumCapacity: elements.count)

extension Json: CustomStringConvertible {
    
    public var description: String {
        switch self.value {
        case nil: return "nil"
        case let number as NSNumber: return number.description
        case let string as String: return string
        case let array as [AnyObject]:
            var result = "["
            var first = true
            for item in array {


extension Json: ExpressibleByArrayLiteral {
    
    public init(arrayLiteral elements: Json ...) {
        self.init(elements)
    }
}

extension Json: ExpressibleByDictionaryLiteral {
    
    public init(dictionaryLiteral elements: (String, Json) ...) {
        var dictionary = [String: Any](minimumCapacity: elements.count)
        for (key, value) in elements {
            dictionary[key] = Json.unwrap(value)
