【发布时间】:2016-07-22 02:22:47
【问题描述】:
下面是 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" : “01034_186893@gmail.com"], ["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{}
通过打印 jsonObject,我得到了这个。
[{ "value": "pay", "name": "action" }, { "value": { "rows": [{ “价格”:“1”,“数量”:“1”,“成本”:“1”,“货币”:“INR”, “itemId”:“DN001”,“title”:“为 SMSF India 捐款 - 普通基金” }],“总计”:1 },“名称”:“cartJsonData”},{“价值”:“钦奈”, “名称”:“中心”},{“值”:“503”,“名称”:“flatNumber”},{ “价值”:“”,“名称”:“panNumber”},{“名称”:“payWith”},{“价值”: “每月”,“名称”:“提醒频率”},{“名称”:“shipToAddr1”},{ “名称”:“shipToAddr2”},{“名称”:“shipToCity”},{“价值”:“印度”, “名称”:“shipToCountryName”},{“价值”:“01034_186893@gmail.com”, “名称”:“shipToEmail”},{“值”:“4480101010”,“名称”: "shipToFirstName" }, { "name": "shipToLastName" }, { "value": “4480101010”,“名称”:“shipToPhone”},{“名称”:“shipToState”},{ "name": "shipToZip" }, { "value": "null", "name": "userId" }, { “值”:“IN”,“名称”:“shipToCountry”}]
我希望 JSON 采用以下格式。
[{ “name”: “action”, “value”: “pay” }, { “name”: “cartJsonData”, “价值”: “{\”total\”:1,\”rows\”:[{\”itemId\”:\”DN002\”,\”title\”:\”捐赠 SMSF 印度 - 一般 资金\”,\”数量\”:\”100\”,\”货币\”:\”INR\”,\”价格\”:\”1\”,\”成本\”:\”100\ ”}]}” }, { “name”: “center”, “value”: “Chennai” }, { “name”: “flatNumber”, “值”:“”},{“名称”:“panNumber”,“值”:“ASSDDBBDJD”},{ “姓名”:“payWith”},{“姓名”:“提醒频率”,“价值”:“每月” },{“名称”:“shipToAddr1”},{“名称”:“shipToAddr2”},{“名称”: “shipToCity”},{“名称”:“shipToCountryName”,“值”:“印度”},{ “名称”:“shipToEmail”,“值”:“Sudhakar@gmail.com”},{“名称”: “shipToFirstName”,“值”:“Raju”},{“名称”:“shipToLastName”},{ “名称”:“shipToPhone”,“值”:“1234567890”},{“名称”: “shipToState” }, { “name”: “shipToZip” }, { “name”: “userId”, “value”: “null” }, { “name”: “shipToCountry”, “value”: “IN” }]
怎么做?只有cartJsonData 中的值需要更改。有人可以帮我解决这个问题吗?
【问题讨论】:
-
使用
try语法jsonObject永远不会是nil -
是什么让您对输出感到困扰?看起来它是一个有效的json。我猜你不喜欢你的键和值顺序被改变的事实。在这种情况下你不能修复它,因为字典不保留键的顺序,我的意思是你仍然可以通过某种方式解决这个问题自己输出 json 或使用其他库来执行此操作,但这听起来不值得。
-
顺便说一句,也许你会对
WritingOptions.sortedKeys选项感兴趣