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?

À l'aide de la 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 option

OriginalL'auteur Divya Ponnuraj | 2016-04-02