review changes

This commit is contained in:
Scott Pfeil 2022-01-24 18:14:37 -05:00
parent f2d824f829
commit 306e66a3b2

View File

@ -20,11 +20,11 @@ public enum JSONError: Error {
extension JSONDictionary { extension JSONDictionary {
public func toJSONString(options: JSONSerialization.WritingOptions = []) -> String? { public func toJSONString(options: JSONSerialization.WritingOptions = []) throws -> String {
guard let data = try? JSONSerialization.data(withJSONObject: self, options: options), let data = try JSONSerialization.data(withJSONObject: self, options: options)
let string = String(data: data, encoding: .utf8) else { guard let string = String(data: data, encoding: .utf8) else {
return nil throw JSONError.error(message: "Failed to convert data to string")
} }
return string return string
} }
@ -32,10 +32,10 @@ extension JSONDictionary {
var queryItems: [URLQueryItem] = [] var queryItems: [URLQueryItem] = []
for (key, value) in self { for (key, value) in self {
var valueString: String var valueString: String
if let value = value as? JSONDictionary, let jsonString = value.toJSONString() { if let value = value as? JSONDictionary {
valueString = jsonString valueString = try value.toJSONString()
} else if let value = value as? [AnyHashable], let jsonString = value.toJSONString() { } else if let value = value as? [AnyHashable] {
valueString = jsonString valueString = try value.toJSONString()
} else { } else {
guard let baseValueString = String(describing: value.base).removingPercentEncoding else { guard let baseValueString = String(describing: value.base).removingPercentEncoding else {
throw JSONError.error(message: "query item failed: \(key) value \(value.base)") throw JSONError.error(message: "query item failed: \(key) value \(value.base)")
@ -51,11 +51,11 @@ extension JSONDictionary {
extension Array where Element == AnyHashable { extension Array where Element == AnyHashable {
public func toJSONString(options: JSONSerialization.WritingOptions = []) -> String? { public func toJSONString(options: JSONSerialization.WritingOptions = []) throws -> String {
guard let data = try? JSONSerialization.data(withJSONObject: self, options: options), let data = try JSONSerialization.data(withJSONObject: self, options: options)
let string = String(data: data, encoding: .utf8) else { guard let string = String(data: data, encoding: .utf8) else {
return nil throw JSONError.error(message: "Failed to convert data to string")
} }
return string return string
} }
} }