2013-08-09 3 views
1

일부 JSON을 Rails 백엔드로 보내려고합니다. 페이로드 (NSDictionary)를 serialize 할 때 빈 배열은 [] (빈 배열) 대신 nil로 인코딩됩니다.iOS JSON 직렬화 빈 배열이 [] 대신 nil로 직렬화 됨

[i]로 비어있는 NSArray를 인코딩하는 JSON이 iOS에서 지원되지 않습니까?

나는 dataWithJSONObject 내에서 'options'을 변경하려고 시도했다. 성공하지 못했다. @ "[]"일반 NSString으로 보내기도 작동하지 않습니다. 도움을

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:payload options:NSJSONReadingMutableLeaves error:&error]; 

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:jsonData]; 
AFJSONRequestOperation *authRequest = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:successBlock failure:failBlock]; 
[authRequest start]; 

감사 : 여기

코드입니다!

+0

다른 언어에서 반대의 것을 보았습니다. 언어에 NSNull이 없으므로 빈 배열이 사용됩니다. iOS에서 빈 배열을 보내라는 전화가 없었던 것 같습니다. –

+0

Objective-C에 대한 다른 12 가지 JSON 구현 중 하나를 시도해 볼 수 있습니다. –

+1

'NSError *'객체의 주소를'error :'인수로 전달한 다음 반환 할 때 검사하십시오. –

답변

1

내가 문제가 레일에서가 아니라 아이폰 OS에서 오는 의심 예를 들어, 3.2.11

https://github.com/rails/rails/issues/8832

https://github.com/rails/strong_parameters/issues/82

이후 레일의 보안 구멍과 관련된 문제가 있습니다 :

본문에 빈 배열 보내기 {"bookmarks":[]}

레일스에서 ​​일련 번호 : {"bookmarks"=>nil}

문제가 발생한 곳에서 Charles와 같은 프록시를 사용하여 요청을 검사해야합니다.