2011-11-22 64 views
5

我想用一個關鍵字來包裝我的HTTP POST請求。換句話說,我希望把這個:Objective C + Reskit - 如何用密鑰包裝字典以避免格式化問題?

{ 
"category_id"=>"1", 
"food_name_token"=>"Pizza", 
"id"=>"1" 
} 

成這樣:

{ 
"dish" => 
    { 
    "category_id"=>"1", 
    "food_name_token"=>"Pizza", 
    "id"=>"1" 
    } 
} 

我使用'rootKeyPath的方法在RestKit嘗試:

serializationMapping.rootKeyPath = @"dish";  

但是,這給了我這個奇怪格式化的字符串:

{ 
"dish"=> 
    "{ 
    \n \"category_id\" = 1; 
    \n \"food_name_token\" = Pizza; 
    \n id = 1; 
    \n} 
"} 

它使用等號和分號代替箭頭和逗號,並在所有這些換行符中添加並避免反斜槓。

任何想法爲什麼?關於我能做什麼的建議?

P.S.我正在使用Rails後端

+0

http://stackoverflow.com/questions/7521683/nsdictionary-description-formatting-problem-treats-structure-like-char-data – SVD

回答

2

我發現與Restkit我可以用括號包裹屬性:

[dishMapping mayKeyPath:@"dish[food_name_token]" toAttribute:@"placeToken"]; 

而且這給了我一個正常的輸出沒有奇怪的格式。

+0

這個迴應是挽救生命的。謝謝! – Schrockwell

2
NSDictionary *rootDictionary = [NSDictionary dictionaryWithObject:childDict forKey:@"dish"]; 

這應該解決它。

+0

Jonathan如何得到childDict? –

+0

我以爲你記錄之後就已經離開了。 –

+0

你的回答讓我意識到問題不在於RestKit的'rootKeyPath'方法,因爲我嘗試了你的解決方案,並且它產生了相同的結果。相反,問題在於Objective C序列化我的Dictionary對象的方式。即使它以正確的方式包裝,仍然會給我這些額外的轉義字符串,使服務器難以解析。它並沒有完全回答我的問題,但它確實回答了我作爲我的頭銜所提出的問題(儘管我意識到這是一個錯誤的問題,所以我應該改變它)。所以我只會給你一個投票。 –

0

添加項目到一個NSArray,然後將陣列添加到NSDictionary的,就像這樣:

NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObject:results], @"Parent",nil]; 
NSLog(@"NSDicitonary %@",item); 
NSLog(@"Child values %@",[item valueForKey:@"Parent"]); 
+0

我試過你的解決方案,但它對我產生了相同的結果.. –

+0

我讀了關於使用數組以及從此鏈接:http://stackoverflow.com/questions/7521683/nsdictionary-description-formatting-problem-treats-結構像char-data但我不明白如何實現他的方式。 –