update json decoding

This commit is contained in:
Jungpyo Hong 2021-05-26 22:25:28 -05:00 committed by GitHub
parent 718e5e3d03
commit 973e32c53c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -397,6 +397,10 @@ Currently Working
API(Application Programming Interface) is an interface that defines interactions between multiple software applications or mixed hardware-software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. API(Application Programming Interface) is an interface that defines interactions between multiple software applications or mixed hardware-software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc.
### Various API Site
- [rapidAPI](https://www.rapidapi.com)
- [Programmableweb](https://www.programmableweb.com/)
## JSON ## JSON
JSON is a language-independent data format JSON is a language-independent data format
> Which is relative with **KEY - VALUE** pair > Which is relative with **KEY - VALUE** pair
@ -418,7 +422,7 @@ JSON is a language-independent data format
This extension makes JSON more structable This extension makes JSON more structable
[JSON parser pro](https://chrome.google.com/webstore/detail/json-viewer-pro/eifflpmocdbdmepbjaopkkhbfmdgijcc) **FREE** :+1: [JSON parser pro](https://chrome.google.com/webstore/detail/json-viewer-pro/eifflpmocdbdmepbjaopkkhbfmdgijcc) **FREE** :+1:
### JSON Decoding ## JSON Decoding
To use JSON Decoding in swift, you have to define the model to be Codable or Decodable To use JSON Decoding in swift, you have to define the model to be Codable or Decodable
@ -454,12 +458,70 @@ T.self -> Model(Struct) of the data that you want to decode
unwrappedData -> Input actual data from file or server unwrappedData -> Input actual data from file or server
> This should be a Data Type!! > This should be a Data Type!!
### JSONSerialization ## JSONSerialization
JSONSerialization is a old way of decode the JSON file JSONSerialization is a old way of decode the JSON file.
> Apple populated Codable since Swift 4
### Example
Example of number.json data
```json
{
"number": [
{
"name": "Dennis",
"number": "111-222-3333"
},
{
"name": "Jenny",
"number": "444-555-6666"
},
{
"name": "Ben",
"number": "777-888-9999"
}
]
}
```
Here is a example of JSONSerialization with actaul JSON file in project folder
> Otherwise you can use URL!
```swift
private func populateDataFromJson() {
if let path = Bundle.main.path(forResource: "NumberData", ofType: "json") {
do {
let dataJson = try Data(contentsOf: URL(fileURLWithPath: path))
let jsonDict = try JSONSerialization.jsonObject(with: dataJson, options: .mutableContainers)
if let jsonResults = jsonDict as? [String: Any],
let results = jsonResults["number"] as? [[String: Any]] {
results.forEach { dict in
// simply appended to list(array)
self.phoneNumberList.append(PhoneNumber(name: dict["name"] as? String ?? "", number: (dict["number"] as? String ?? "")))
self.phoneNumberListClone.append(PhoneNumber(name: dict["name"] as? String ?? "", number: (dict["number"] as? String ?? "")))
}
}
} catch {
print(error.localizedDescription)
}
}
}
```
> .mutableContainers allows to working like a array and dictionary type
### JSON Parser Library
This library provide JSON parsing
- [SwifyJSON](https://github.com/SwiftyJSON/SwiftyJSON)
### Various API Site
- [rapidAPI](https://www.rapidapi.com)
## UserDefaults ## UserDefaults