У меня есть массив словаря, преобразованный в строку JSON, как это,
NSMutableArray *returnArray = [NSMutableArray new];
NSMutableDictionary *temp1= [NSMutableDictionary new];
[temp setObject:@"item1" forKey:@"notes"];
NSMutableDictionary *temp2= [NSMutableDictionary new];
[temp2 setObject:@"item & item2 " forKey:@"notes"];
NSString *json = [self aryToJSONString:allSync];
JSON конвертер:
-(NSString *)aryToJSONString:(id) ary{
NSError *error;
NSString *jsonString;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ary
options:0 // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}
Преобразованный JSON:
[{"notes":"item"},{"notes":"item1 & item2"}]
а затем отправить его на сервер (PHP). Сервер получает непарсируемую строку JSON, как это,
[{\"notes\":\" item1 \"},{\"notes\":\"item1 ","item2\"}]":"
Как я могу справиться &
специальный характер вопроса?
РЕДАКТИРОВАТЬ:
PHP-код:
$json = $_REQUEST['json'];
$json = stripslashes($json);
$jsonArr = json_decode($json, true);
while($item = array_shift($jsonArr))
{
foreach($item as $key=>$value)
{
}
}
Попробуйте код ниже:
Передайте JSON-строку в метод ниже, прежде чем отправлять на сервер.
-(NSString*)replaceSpecialCharsFromString:(NSString*)str
{
str = [str stringByReplacingOccurrencesOfString:@"&" withString:@"&"];
str = [str stringByReplacingOccurrencesOfString:@"<" withString:@"<"];
str = [str stringByReplacingOccurrencesOfString:@">" withString:@">"];
return str;
}
Других решений пока нет …