J'essaie de générer un objet JSON et de le convertir en chaîne JSON. Ce processus a été placé avec succès. Mais mon vrai problème se pose lorsque j'essaie de convertir JSON String en objet JSON. Quand j'essaye je suis nul comme résultat.
func generateJSONObject() {
let jsonObject = createJSONObject(firstName: firstName[0], middleName: middleName[0], lastName: lastName[0], age: age[0], weight: weight[0])
print("jsonObject : \(jsonObject)")
let jsonString = jsonObject.description // convert It to JSON String
print("jsonString : \(jsonString)")
let jsonObjectFromString = convertToDictionary(text: jsonString)
print("jsonObjectFromString : \(String(describing: jsonObjectFromString))")
}
// JSON Object creation
func createJSONObject(firstName: String, middleName: String, lastName: String, age: Int, weight: Int) -> [String: Any] {
let jsonObject: [String: Any] = [
"user1": [
"first_name": firstName,
"middle_name": middleName,
"last_name": lastName,
"age": age,
"weight": weight
]
]
return jsonObject
}
func convertToDictionary(text: String) -> [String: Any]? {
if let data = text.data(using: .utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
} catch {
print(error.localizedDescription)
}
}
return nil
}
JSON
Objet, je reçoisjsonObject: ["user1": ["age": 21, "prénom du milieu": "Lazar", "dernier nom": "V", "poids": 67, "premier nom": "Alwin"]]
Quand j'imprime JSON
String je reçois
jsonString: ["user1": ["age": 21, "prénom du milieu": "Lazar", "dernier nom": "V", "poids": 67, "premier nom": "Alwin"]]
Convertir JSON
String en JSON
Object que j'obtiens au-dessous de l'erreur
Les données ne peuvent pas être lues car elles ne sont pas au format correct.
jsonObjectFromString: nil
Je ne sais pas pourquoi cela se passe. Je veux convertir JSON
String en JSON
Object et je veux analyser le JSON
.
basé sur la discussion
import Foundation
let firstName = "Joe"
let lastName = "Doe"
let middleName = "Mc."
let age = 100
let weight = 45
let jsonObject: [String: [String:Any]] = [
"user1": [
"first_name": firstName,
"middle_name": middleName,
"last_name": lastName,
"age": age,
"weight": weight
]
]
if let data = try? JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted),
let str = String(data: data, encoding: .utf8) {
print(str)
}
empreintes
{
"user1" : {
"age" : 100,
"middle_name" : "Mc.",
"last_name" : "Doe",
"weight" : 45,
"first_name" : "Joe"
}
}
Json doit être dans Array ou Dictionary, il ne peut s'agir que de chaîne. Pour créer une chaîne json, vous devez d'abord convertir au format Data, puis convertir en String.
func generateJSONObject() {
let jsonObject = createJSONObject(firstName: "firstName", middleName: "middleName", lastName: "lastName", age: 21, weight: 82)
print("jsonObject : \(jsonObject)")
if let jsonString = convertToJsonString(json: jsonObject), let jsonObjectFromString = convertToDictionary(text: jsonString) {
print("jsonObjectFromString : \(jsonObjectFromString)")
}
}
func convertToJsonString(json: [String: Any]) -> String? {
do {
let jsonData = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
return String(data: jsonData, encoding: .utf8)
} catch {
print(error.localizedDescription)
}
return nil
}