Objective C和PHP進行json互動

2021-06-16 23:14:56 字數 2055 閱讀 7384

由於asihttprequest的作者已經明確不再維護這個庫了,所以我使用了較為輕量的mknetworkkit庫。

服務端,php自帶了json的序列化和反序列化函式:json_encode和json_decode。而對於客戶端,我採用了touchjson這個開源庫。

btw,github已經是新一代的、主流的開源文化和產業了,上面提到的開源庫,都來自github。 :)

首先,客戶端利用mknetworkkit庫向服務端發個請求:

服務端收到請求後,構造返回引數,然後回饋給客戶端:

1

2

3

4

5

6

$arr=array();

$arr['code'] = 200;

$arr['msg'] ='你好,中文';

$jsondata= json_encode($arr);

echo$jsondata;

這裡會遇到第乙個問題,就是msg欄位對應的中文變成null了。

google一下,得知是json要求utf-8編碼,現有簡單解決方案是轉換下編碼:

1

2

3

4

5

6

functiongbk2utf8($data)

returniconv('gbk','utf-8',$data);

}

客戶端接著可以處理服務端返回的資料,利用touchjson進行反序列化:

1

2

3

4

5

6

7

8

9

nsstring *jsonstr = [operation responsestring];

nsdata *jsondata = [jsonstr datausingencoding:nsutf8stringencoding];

nserror *error = nil;

nsdictionary *info = [[cjsondeserializer deserializer] deserializeasdictionary:jsondata error:&error];

if(info)

同樣地,客戶端也可以先封裝json資料,再傳遞給服務端。

php利用json_decode反序列化時,需要注意的是預設返回的是乙個php物件,如果需要轉換陣列,則需要指定$assoc引數為true,可參見: 。

Objective C和PHP進行json互動

由於asihttprequest的作者已經明確不再維護這個庫了,所以我使用了較為輕量的mknetworkkit庫。服務端,php自帶了json的序列化和反序列化函式 json encode和json decode。而對於客戶端,我採用了touchjson這個開源庫。btw,github已經是新一代的...

Objective C和PHP進行json互動

由於asihttprequest的作者已經明確不再維護這個庫了,所以我使用了較為輕量的mknetworkkit庫。服務端,php自帶了json的序列化和反序列化函式 json encode和json decode。而對於客戶端,我採用了touchjson這個開源庫。btw,github已經是新一代的...

Objective C之類和物件

面向過程程式設計 procedure oriented programming,pop 以事件為中心,關心完成該事件的詳細步驟,一步一步如何實現.物件導向程式設計 object oriented programming,oop 以事物為中心,也就是引數事件的參與者,設計事物的功能,而完成事件只是事物...