在iOS中有兩種常用的容器Object,就是Dictionary和Array,而現在資料傳輸到伺服器幾乎都在使用JSON,於是就有很多機會要將Object 轉換成 JSON。
註:
JSON(JavaScript Object Notation,JavaScript物件表示法,讀作/ˈdʒeɪsən/)是一種由道格拉斯·克羅克福特構想和設計、輕量級的資料交換語言,該語言以易於讓人閱讀的文字為基礎,用來傳輸由屬性值或者序列性的值組成的資料物件。儘管JSON是JavaScript的一個子集,但JSON是獨立於語言的文字格式,並且採用了類似於C語言家族的一些習慣。
JSON 資料格式與語言無關,脫胎自JavaScript,但目前很多程式語言都支援 JSON 格式資料的生成和解析。JSON 的官方 MIME 類型是 application/json,副檔名是 .json。
原以為直接把物件description傳出去就好,後來想想格式根本就不對,在想怎麼跑for迴圈來建立json格式字串。經過兩個多禮拜的思索,搜尋後才發現可以轉兩次,物件(Dictionary或Array)先轉NSData,再轉NSString,如此格式就能被Server所吃~
/** Theme: Object to JSON IDE: None Language: Objective C Date: 108/10/22 Author: HappyMan Blog: https://cg2010studio.com/ */ NSError *err; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:contentArr options:0 error:&err]; NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
#description的字串如下:
<__NSArrayM 0x107a5abf0>(
{
id = “happy-prints-30s";
“item_price" = “";
quantity = 1;
},
{
id = “happy-l-cover";
“item_price" = “";
quantity = 1;
},
{
id = “happy-cover";
“item_price" = “";
quantity = 1;
},
{
id = “happy-envelope";
“item_price" = “";
quantity = 1;
},
{
id = “happy-envelope";
“item_price" = “";
quantity = 1;
},
{
id = “happy-l-cover";
“item_price" = “";
quantity = 1;
}
)
#先轉NSData再轉NSString的字串如下:
[{“id":"happy-prints-30s","quantity":1,"item_price":""},{“id":"happy-l-cover","quantity":1,"item_price":""},{“id":"happy-cover","quantity":1,"item_price":""},{“id":"happy-envelope","quantity":1,"item_price":""},{“id":"happy-envelope","quantity":1,"item_price":""},{“id":"happy-l-cover","quantity":1,"item_price":""}]
這樣子Facebook Pixel後台應該能判斷了吧:P~
參考:Generate JSON string from NSDictionary in iOS、WiKi – JSON。
隨意留個言吧:)~