JSON数据NULL特殊字符“&”

时间:2014-01-08 09:48:52

标签: json web-services nsjsonserialization

目前我有一个字符串,我想POST到一个URL。

除非遇到像“&”这样的特殊字符,否则它的效果非常好。它将POST之后发布的其他数据。例如,我在品牌文字中有一个字符串“Chang& hong”,通过选择模型值取决于品牌文本我将URL解析为

post=[NSString stringWithFormat:@"http://moneytree.com.au/rest-webservice/rest/&Brand=%@",StrbrandSelect1];

NSURL *url;
 url = [NSURL URLWithString:[post
                            stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *RequestSubject=[[NSMutableURLRequest alloc]init];

[RequestSubject setURL:url];
[RequestSubject setHTTPMethod:@"POST"];
NSLog(@"RequestSubject %@",RequestSubject);
Typedata1 = [NSURLConnection sendSynchronousRequest:RequestSubject
                                  returningResponse:Nil error:Nil];
if (RequestSubject)
{
    NSDictionary *Dictjson = [NSJSONSerialization
                              JSONObjectWithData:Typedata1
                              options:kNilOptions
                              error:nil];

    NSLog(@"The JSON outPut is:%@",Dictjson);

    NSLog(@"The Array Count is: %d",[Dictjson count]);

但数组计数为:0

选择数据取决于品牌“Chang& hong”

我需要输出数据取决于品牌字符串Model Text - “Plasma”和“LCD”。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

发送网址时,某些字符“不允许”或具有其他含义。例如,每个空格应为%20,例如“&” sign将是%26,否则它被服务器解释为转到下一个变量,就像你不会使用“/”符号一样,因为浏览器会将它误认为是指向其他地方的链接。如果您发送Brand = Chang%20&%20hong,服务器会在& 20之后处理该部分。作为一个新变量。这就是为什么你用Chang%20%26%20hong代替它。

使用您使用的网址的另一个示例:

?CountryName=Australia&appliance=Television&Brand=Chang%20%26%20hong

字面'&'标志用于分隔服务器的不同变量,在这种情况下:CountryName,appliance和Brand。当你使用文字'&'在你的消息中,你认为%20hong是一个新的变量。