2014-10-03 52 views
1

我想發佈一個包含數組的我的服務器的JSON消息。但是,服務器無法識別陣列中的元素。在檢查了這個問題之後,我遇到了我認爲是問題的東西。Node.js bodyparser無法準備AFNetworking POST數組

AFNetworking代碼:

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:kServiceBaseUrl]]; 
manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

[manager PUT:@"/api/createRubaway" 
    parameters:myDictionary 
     success:^(NSURLSessionDataTask *task, NSDictionary *responseObject) 
    {/* stuff */} 
     failure:^(NSURLSessionDataTask *task, NSError *error) 
    {/* stuff */} 
]; 

LLDB打印出 'myDictionary' 的:

{ 
    description = description; 
    title = title; 
    transitions =  (
       { 
      idx = 0; 
      resource =    { 
       data = testdata; 
       name = transition; 
       type = image; 
      }; 
      threshold = "0.75"; 
      type = rubaway; 
     }, 
       { 
      idx = 1; 
      resource =    { 
       data = testdata; 
       name = transition; 
       type = image; 
      }; 
      threshold = "0.75"; 
      type = rubaway; 
     } 
    ); 
} 

後AFNetworking已串行化的請求。如果我打印出從NSMutableRequest的HTTPBody,這是它在發送(這是被髮送到我的服務器):

description=description&title=title&transitions[][idx]=0& 
transitions[][resource][data]=testdata& 
transitions[][resource][name]=transition& 
transitions[][resource][type]=image& 
transitions[][threshold]=0.75& 
transitions[][type]=rubaway&transitions[][idx]=1& 
transitions[][resource][data]=testdata& 
transitions[][resource][name]=transition& 
transitions[][resource][type]=image&transitions[][threshold]=0.75& 
transitions[][type]=rubaway 

是上述格式正確無誤。作爲我的服務器(Node.js - BodyParser),我相信它會採用這種格式https://stackoverflow.com/a/18402556/623750

有沒有辦法更改JSON序列化程序的格式?或者,有沒有辦法配置BodyParser接受上述格式?

感謝, 瑞安

+0

一個問題,在nodejs代碼中;你在文件中添加了什麼('')?我面臨同樣的問題,req.body不被識別爲數組。 – 2015-02-27 11:08:58

回答

1

所有你需要做的,以requestSerializer設置爲AFJSONRequestSerializer,這將解決這個問題。

[manager setRequestSerializer:[AFJSONRequestSerializer serializer]]; 
[manager setResponseSerializer:[AFJSONResponseSerializer serializer]]; 
+0

啊。我忘了設置請求序列化程序。謝謝,效果很好! – Ryan 2014-10-03 11:21:48

+0

req.body等於網絡響應對象。如果你想要一個數組,那麼:req.body = ['test','test2']; – Ryan 2015-02-27 11:17:32