Skip to content

Commit bfb6ed7

Browse files
authored
fix: revert AnyJSON codable (#580)
1 parent 7266b64 commit bfb6ed7

File tree

2 files changed

+33
-60
lines changed

2 files changed

+33
-60
lines changed

Sources/Helpers/AnyJSON/AnyJSON+Codable.swift

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import Foundation
99

1010
extension AnyJSON {
1111
/// The decoder instance used for transforming AnyJSON to some Codable type.
12-
@available(
13-
*, deprecated, message: "decoder is deprecated, AnyJSON now uses default JSONDecoder()."
14-
)
1512
public static let decoder: JSONDecoder = {
1613
let decoder = JSONDecoder()
1714
decoder.dataDecodingStrategy = .base64
@@ -35,9 +32,6 @@ extension AnyJSON {
3532
}()
3633

3734
/// The encoder instance used for transforming AnyJSON to some Codable type.
38-
@available(
39-
*, deprecated, message: "encoder is deprecated, AnyJSON now uses default JSONEncoder()."
40-
)
4135
public static let encoder: JSONEncoder = {
4236
let encoder = JSONEncoder()
4337
encoder.dataEncodingStrategy = .base64
@@ -64,38 +58,23 @@ extension AnyJSON {
6458
} else if let double = value as? Double {
6559
self = .double(double)
6660
} else {
67-
let data = try JSONEncoder().encode(value)
68-
self = try JSONDecoder().decode(AnyJSON.self, from: data)
61+
let data = try AnyJSON.encoder.encode(value)
62+
self = try AnyJSON.decoder.decode(AnyJSON.self, from: data)
6963
}
7064
}
7165

7266
/// Decodes self instance as `Decodable` type.
73-
public func decode<T: Decodable>(as type: T.Type = T.self) throws -> T {
74-
let data = try JSONEncoder().encode(self)
75-
return try JSONDecoder().decode(T.self, from: data)
76-
}
77-
78-
@available(
79-
*, deprecated, renamed: "decode(as:)", message: "Providing a custom decoder is deprecated."
80-
)
8167
public func decode<T: Decodable>(
82-
as _: T.Type = T.self,
68+
as type: T.Type = T.self,
8369
decoder: JSONDecoder = AnyJSON.decoder
8470
) throws -> T {
8571
let data = try AnyJSON.encoder.encode(self)
86-
return try decoder.decode(T.self, from: data)
72+
return try decoder.decode(type, from: data)
8773
}
8874
}
8975

9076
extension JSONArray {
9177
/// Decodes self instance as array of `Decodable` type.
92-
public func decode<T: Decodable>(as _: T.Type = T.self) throws -> [T] {
93-
try AnyJSON.array(self).decode(as: [T].self)
94-
}
95-
96-
@available(
97-
*, deprecated, renamed: "decode(as:)", message: "Providing a custom decoder is deprecated."
98-
)
9978
public func decode<T: Decodable>(
10079
as _: T.Type = T.self,
10180
decoder: JSONDecoder = AnyJSON.decoder
@@ -106,13 +85,6 @@ extension JSONArray {
10685

10786
extension JSONObject {
10887
/// Decodes self instance as `Decodable` type.
109-
public func decode<T: Decodable>(as type: T.Type = T.self) throws -> T {
110-
try AnyJSON.object(self).decode(as: type)
111-
}
112-
113-
@available(
114-
*, deprecated, renamed: "decode(as:)", message: "Providing a custom decoder is deprecated."
115-
)
11688
public func decode<T: Decodable>(
11789
as _: T.Type = T.self,
11890
decoder: JSONDecoder = AnyJSON.decoder

Tests/HelpersTests/AnyJSONTests.swift

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,13 @@
77

88
import CustomDump
99
import Foundation
10-
@testable import Helpers
1110
import XCTest
1211

12+
@testable import Helpers
13+
1314
final class AnyJSONTests: XCTestCase {
1415
let jsonString = """
15-
{
16-
"array" : [
17-
1,
18-
2,
19-
3,
20-
4,
21-
5
22-
],
23-
"bool" : true,
24-
"double" : 3.14,
25-
"integer" : 1,
26-
"null" : null,
27-
"object" : {
16+
{
2817
"array" : [
2918
1,
3019
2,
@@ -37,13 +26,25 @@ final class AnyJSONTests: XCTestCase {
3726
"integer" : 1,
3827
"null" : null,
3928
"object" : {
29+
"array" : [
30+
1,
31+
2,
32+
3,
33+
4,
34+
5
35+
],
36+
"bool" : true,
37+
"double" : 3.14,
38+
"integer" : 1,
39+
"null" : null,
40+
"object" : {
4041
42+
},
43+
"string" : "A string value"
4144
},
4245
"string" : "A string value"
43-
},
44-
"string" : "A string value"
45-
}
46-
"""
46+
}
47+
"""
4748

4849
let jsonObject: AnyJSON = [
4950
"integer": 1,
@@ -65,20 +66,20 @@ final class AnyJSONTests: XCTestCase {
6566

6667
func testDecode() throws {
6768
let data = try XCTUnwrap(jsonString.data(using: .utf8))
68-
let decodedJSON = try JSONDecoder().decode(AnyJSON.self, from: data)
69+
let decodedJSON = try AnyJSON.decoder.decode(AnyJSON.self, from: data)
6970

7071
expectNoDifference(decodedJSON, jsonObject)
7172
}
7273

73-
func testEncode() throws {
74-
let encoder = JSONEncoder()
75-
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
76-
77-
let data = try encoder.encode(jsonObject)
78-
let decodedJSONString = try XCTUnwrap(String(data: data, encoding: .utf8))
79-
80-
expectNoDifference(decodedJSONString, jsonString)
81-
}
74+
func testEncode() throws {
75+
let encoder = AnyJSON.encoder
76+
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
77+
78+
let data = try encoder.encode(jsonObject)
79+
let decodedJSONString = try XCTUnwrap(String(data: data, encoding: .utf8))
80+
81+
expectNoDifference(decodedJSONString, jsonString)
82+
}
8283

8384
func testInitFromCodable() {
8485
try expectNoDifference(AnyJSON(jsonObject), jsonObject)

0 commit comments

Comments
 (0)