ios中json object轉換成字串

2021-06-19 17:47:53 字數 1334 閱讀 8777

在ios中也經常需要操作json object,特別是與服務端互動的時候

專案中資料庫訪問用了fmdb元件,有乙個很方便的api,可以直接返回乙個nsdictionary

fmresultset *rs = [db executequery:sql, latestobj, nowobj, latestobj, nowobj];

while ([rs next])

然後我想把nsdictionary直接轉成nsstring,通過description方法

但是這樣不行,雖然返回值型別是nsstring,但並不是正確的json格式。在網上搜尋了一番,需要先從nsdictionary轉為nsdata,再從nsdata得到nsstring,格式就是正確的了:

nserror *error;

nsdata *jsondata = [nsjsonserialization datawithjsonobject:row options:nsjsonwritingprettyprinted error:&error];

nsstring *jsonstring = [[nsstring alloc] initwithdata:jsondata encoding:nsutf8stringencoding];

關鍵就是datawithjsonobject方法,引數是nsdictionary,返回值是nsdata。然後再通過nsstring的initwithdata方法,得到正確的nsstring

還有另乙個相反的api,可以從nsdata得到nsdictionary,然後就可以呼叫nsdictionary的api來操作json object

nsdata *response = [nsurlconnection sendsynchronousrequest:request returningresponse:nil error:nil];

nserror *error = nil;

nsdictionary *jsonarray = [nsjsonserialization jsonobjectwithdata:response options:kniloptions error:&error];// 包含兩個key,code和result,或者code和error

nsnumber *code = [jsonarray objectforkey:@"code"];

if([code intvalue] == 0)

上面**呼叫了jsonobjectwithdata,從nsdata得到nsdictionary,nsdictionary就視為乙個json object

JsonObject中的optDouble方法

當從乙個 jsonobject 中取值時,通常有兩個方法 opt 和 get get key 取值 不存在 或者型別不對 報錯 opt key 0 取值 不存在 返回預設值 這些方法有,逗號後面的是預設值 optboolean,false optdouble,0.0d optint,0 optlon...

Json字串轉jsonobject的排序問題

static string json 前面的那個字串直接用 jsonobject jsonobject jsonobject.parseobject json 轉換會返回 和之前的順序不一致 原因jsonobject內部是用hashmap來儲存的,所以輸出是按key的排序來的,如果要讓jsonobj...

iOS 中json中字典 轉json格式字串

這是我從plist檔案中找到的乙個字典,把裡面的字典轉成了json資料,多注意字串的拼接,雖然不難,容易犯錯誤。nsarray flags nsmutablestring jsonstring nsmutablestring stringwithformat mutstr jsonstring in...