diff --git a/SwiftyJSONModel/JSONTypes.swift b/SwiftyJSONModel/JSONTypes.swift index d6d3b1d..c4641da 100644 --- a/SwiftyJSONModel/JSONTypes.swift +++ b/SwiftyJSONModel/JSONTypes.swift @@ -17,6 +17,11 @@ public protocol JSONRepresentable { var jsonValue: JSON { get } } +extension JSON: JSONInitializable, JSONRepresentable { + public init(json: JSON) { self = json } + public var jsonValue: JSON { return self } +} + extension String: JSONInitializable, JSONRepresentable { public init(json: JSON) throws { self = try json.value() } public var jsonValue: JSON { return JSON(string: self) } diff --git a/SwiftyJSONModelTests/JSONExtensionTests.swift b/SwiftyJSONModelTests/JSONExtensionTests.swift index 969c9ae..00a301e 100644 --- a/SwiftyJSONModelTests/JSONExtensionTests.swift +++ b/SwiftyJSONModelTests/JSONExtensionTests.swift @@ -44,4 +44,11 @@ class JSONExtensionTests: XCTestCase { XCTAssertEqual(try! JSON(dictionary: json).dictionaryValue(), json) } + func testJSONConformanceToJSONProtocols() { + let json: JSON = ["Some"] + + XCTAssertEqual(JSON(json: json), json) + XCTAssertEqual(json.jsonValue, json) + } + }