2011-11-22 34 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但我不明白如何实现他的方式。 –