Skip to content

Commit af07d4c

Browse files
committed
Custom encoder and decoder
1 parent c530190 commit af07d4c

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

Sources/NTLBridge/JSONValue.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ public enum JSONValue: Codable, Equatable {
113113

114114
/// 从Encodable类型创建JSONValue
115115
public init<T: Encodable>(encodable value: T) {
116-
let encoder = JSONEncoder()
116+
let encoder = NTLBridgeUtil.createEncoder()
117117
let data = try? encoder.encode(value)
118-
let decoder = JSONDecoder()
118+
let decoder = NTLBridgeUtil.createDecoder()
119119
if let data, let jsonValue = try? decoder.decode(JSONValue.self, from: data) {
120120
self = jsonValue
121121
} else {

Sources/NTLBridge/NTLBridgeUtil.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,23 @@ public final class NTLBridgeUtil {
2020

2121
// MARK: - JSON Encoder/Decoder
2222

23-
private static let encoder: JSONEncoder = {
23+
/// 创建JSONEncoder实例,可被子类重写
24+
/// - Returns: 配置好的JSONEncoder实例
25+
public static func createEncoder() -> JSONEncoder {
2426
let encoder = JSONEncoder()
2527
encoder.outputFormatting = []
2628
return encoder
27-
}()
29+
}
2830

29-
private static let decoder: JSONDecoder = {
31+
/// 创建JSONDecoder实例,可被子类重写
32+
/// - Returns: 配置好的JSONDecoder实例
33+
public static func createDecoder() -> JSONDecoder {
3034
let decoder = JSONDecoder()
3135
return decoder
32-
}()
36+
}
37+
38+
private static let encoder = createEncoder()
39+
private static let decoder = createDecoder()
3340

3441
// MARK: - JSONValue Conversion
3542

Sources/NTLBridge/NTLCallInfo.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public struct NTLCallInfo: Codable, Equatable {
2323
self.method = method
2424
self.callbackId = callbackId
2525

26-
let encoder = JSONEncoder()
26+
let encoder = NTLBridgeUtil.createEncoder()
2727
let data = try encoder.encode(codableData)
2828
self.data = String(data: data, encoding: .utf8) ?? "{}"
2929
}
@@ -34,7 +34,7 @@ public struct NTLCallInfo: Codable, Equatable {
3434
self.callbackId = callbackId
3535

3636
if let codableData = codableData {
37-
let encoder = JSONEncoder()
37+
let encoder = NTLBridgeUtil.createEncoder()
3838
let data = try encoder.encode(codableData)
3939
self.data = String(data: data, encoding: .utf8) ?? "{}"
4040
} else {
@@ -49,7 +49,8 @@ public struct NTLCallInfo: Codable, Equatable {
4949

5050
let jsonValues = anyArrayData.compactMap { JSONValue(any: $0) }
5151
let jsonArray = JSONValue.array(jsonValues)
52-
let data = try JSONEncoder().encode(jsonArray)
52+
let encoder = NTLBridgeUtil.createEncoder()
53+
let data = try encoder.encode(jsonArray)
5354
self.data = String(data: data, encoding: .utf8) ?? "[]"
5455
}
5556
}

0 commit comments

Comments
 (0)