mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Various improvements
This commit is contained in:
@@ -50,6 +50,18 @@ extension JSON {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
public init?(dictionary: [String: Any]) {
|
||||
var values: [String: JSON] = [:]
|
||||
for (key, value) in dictionary {
|
||||
if let v = JSON(value) {
|
||||
values[key] = v
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
self = .dictionary(values)
|
||||
}
|
||||
}
|
||||
|
||||
extension JSON: Collection {
|
||||
@@ -125,7 +137,7 @@ extension JSON {
|
||||
get {
|
||||
switch self {
|
||||
case .null:
|
||||
return 0
|
||||
return NSNull()
|
||||
case let .number(value):
|
||||
return value
|
||||
case let .string(value):
|
||||
@@ -172,6 +184,18 @@ extension JSON {
|
||||
}
|
||||
}
|
||||
|
||||
extension JSON {
|
||||
public var string: String? {
|
||||
guard let jsonData = try? JSONSerialization.data(withJSONObject: self.value) else {
|
||||
return nil
|
||||
}
|
||||
guard let jsonDataString = String(data: jsonData, encoding: .utf8) else {
|
||||
return nil
|
||||
}
|
||||
return jsonDataString
|
||||
}
|
||||
}
|
||||
|
||||
extension JSON: ExpressibleByDictionaryLiteral {
|
||||
public init(dictionaryLiteral elements: (String, Any)...) {
|
||||
self = .dictionary(elements.reduce([String: JSON]()) { (dictionary, element) in
|
||||
@@ -195,6 +219,12 @@ private protocol JSONValue {
|
||||
var jsonValue: JSON { get }
|
||||
}
|
||||
|
||||
extension NSNull: JSONElement, JSONValue {
|
||||
var jsonValue: JSON {
|
||||
return .null
|
||||
}
|
||||
}
|
||||
|
||||
extension Int: JSONElement, JSONValue {
|
||||
var jsonValue: JSON {
|
||||
return .number(Double(self))
|
||||
|
||||
Reference in New Issue
Block a user