Comment faire pour convertir en JSON à la Chaîne dans ios Swift?
Voici le code pour le dessous de la sortie Json:
let params : [[String : AnyObject]] = [["name" : "action", "value" : "pay" ],["name" : "cartJsonData" , "value" : ["total": 1,"rows":[["quantity": “1” ,"title":"Donation for SMSF India - General Fund","price":"1","itemId":"DN001","cost": “1”,”currency":"INR"]]]], ["name" : "center", "value" : "Chennai"], ["name" : "flatNumber", "value" : "503"], ["name" : "panNumber", "value" : ""], ["name" : "payWith"], ["name" : "reminderFrequency","value" : "Monthly"], ["name" : "shipToAddr1"], ["name" : "shipToAddr2"], ["name" : "shipToCity"], ["name" : "shipToCountryName" , "value" : "India"], ["name" : "shipToEmail", "value" : “[email protected]"], ["name" : "shipToFirstName" , "value": "4480101010"], ["name" : "shipToLastName"], ["name" : "shipToPhone", "value" : "4480101010"], ["name" : "shipToState"], ["name" : "shipToZip"], ["name" : "userId", "value" : “null”], ["name" : "shipToCountry", "value" : "IN"]]
var jsonObject: NSData? = nil
do {
jsonObject = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions())
print(jsonObject) //This will print the below json.
}
catch{}
Par l'impression jsonObject, j'ai eu celui-là.
[{ "value": "payer", "nom": "action" }, { "valeur": { "ligne": [{
"prix": "1", "quantité": "1", "prix": "1", "currency": "INR",
"itemId": "DN001", "title": "Don pour la SMSF Inde - Fonds Général"
}], "total": 1 }, "nom": "cartJsonData" }, { "value": "Chennai",
"nom": "centre" }, { "value": "503", "nom": "flatNumber" }, {
"value": "", "nom": "panNumber" }, { "name": "payWith" }, { "valeur":
"Mensuel", "nom": "reminderFrequency" }, { "name": "shipToAddr1" }, {
"nom": "shipToAddr2" }, { "name": "shipToCity" }, { "value": "l'Inde",
"nom": "shipToCountryName" }, { "value": "[email protected]",
"nom": "shipToEmail" }, { "value": "4480101010", "nom":
"shipToFirstName" }, { "name": "shipToLastName" }, { "valeur":
"4480101010", "nom": "shipToPhone" }, { "name": "shipToState" }, {
"nom": "shipToZip" }, { "value": "null", "nom": "userId" }, {
"value":"", "nom": "shipToCountry" }]
Et je veux le JSON pour être dans le format ci-dessous.
[{ “name”: “action”, “value”: “payer” }, { “name”: “cartJsonData”,
“value”:
“{\”total\”:1,\”lignes\”:[{\”itemId\”:\”DN002\”,\”title\”:\”Don pour
SMSF Inde - Général
Fonds\”,\”quantité\”:\”100\”,\”monnaie\”:\”RIN\”,\”prix\”:\”1\”,\”coût\”:\”100\”}]}”
}, { “name”: “centre”, “value”: “Chennai” }, { “name”: “flatNumber”,
“value”: “ “ }, { “name”: “panNumber”, “value”: “ASSDDBBDJD” }, {
“nom”: “payWith” }, { “name”: “reminderFrequency”, “value”: “Mensuels”
}, { “name”: “shipToAddr1” }, { “name”: “shipToAddr2” }, { “name”:
“shipToCity” }, { “name”: “shipToCountryName”, “value”: “l'Inde” }, {
“nom”: “shipToEmail”, “value”: “[email protected]” }, { “name”:
“shipToFirstName”, “value”: “Raju” }, { “name”: “shipToLastName” }, {
“nom”: “shipToPhone”, “value”: “1234567890” }, { “name”:
“shipToState” }, { “name”: “shipToZip” }, { “name”: “nom d'utilisateur”, “value”:
“null” }, { “name”: “shipToCountry”, “value”:“”}]
Comment peut-il être fait? Seule la valeur dans cartJsonData
doit être changé. Quelqu'un peut-il m'aider à le résoudre?
try
syntaxe jsonObject
ne sera jamais nil
Qu'est-ce qui vous dérange avec la sortie? Il semble que c'est un json valide. Je devine que vous n'aimez pas le fait que vos clés et des valeurs de l'ordre est changé.. Dans ce cas, vous ne pouvez pas réparer, depuis le dictionnaire ne permet pas de conserver l'ordre des clés, je veux dire que vous pourriez toujours à contourner qu'en quelque sorte par la sortie du json vous-même ou d'utiliser une autre lib pour le faire, mais cela ne ressemble pas à ça en vaut la peine.
btw, peut-être que vous seriez intéressé à
WritingOptions.sortedKeys
optionOriginalL'auteur Divya Ponnuraj | 2016-04-02
Vous devez vous connecter pour publier un commentaire.
De l'essayer.
OriginalL'auteur ak sacha
Swift (du 10 juillet 2018)
Any
, leoptions
paramètre peut être omis (prettyPrinted n'est pas prévu dans la question),convertedString
ne peut jamais êtrenil
(même en Swift 2) et dans lecatch
champ d'application, vous pouvez simplementprint(error)
sanslet
affectation.OriginalL'auteur BennyTheNerd
Swift 4.0
Utilisation
OriginalL'auteur Minh Hoang
À l'aide de la nouvelle Encodable en fonction de l'API, vous pouvez obtenir la chaîne de version d'un fichier JSON à l'aide de la Chaîne(init:encodage) initialiser. J'ai couru ce dans une aire de Jeux et la dernière instruction print m'a donné
Il semble que le format utilise le nombre minimum de caractères en détail.
OriginalL'auteur MarkAurelius