CouchDB 서버에 HTTP PUT 요청을하려고합니다. NSString 인스턴스를 NSData로 변환 중입니다. 그런 다음이 NSData 인스턴스를 NSArray로 변환하고이를 CouchDB에 PUT하려고 시도합니다. 이 같은 뭔가 :; :[]에 포장하지 않고 JSON을 직렬화하십시오.
//convert string to NSData
NSData *docData = [@"{\"name\":\"nick\"}" dataUsingEncoding:NSUTF8StringEncoding];
//NSData to NSArray
NSArray *arrayJson = [NSArray arrayWithObjects:[NSJSONSerialization JSONObjectWithData:docData options:kNilOptions error:nil],nil];
그때 AFNetworking를 사용하여 HTTP PUT 요청을 만드는 오전은 (BTW RAD 인))
문제는이 모습 JSON 문자열을 생성하는 것입니다
[{"name":"nick"}]
이것은 유효한 JSON이지만 소파는 400 개의 잘못된 JSON으로 불평합니다. []를 제거하면 문제가 해결됩니다. 이 괄호는 NSArray NSArray로 변환 한 결과가 있지만 NSJSONSerialization 사용하여이를 수행하는 다른 방법을 잘 모르겠습니다 확신합니다. 누구든지 도와 줄 수 있습니까?
감사합니다.
편집 선명도를 위해서
은 제가 더 가지고 있던 문제를 설명 할 수 있습니다. PUT HTTP 요청을 사용하여 CouchDB HTTP API를 사용하여 문서를 작성 중입니다. 이 문서는 손으로 코딩 된 JSON 일 수 있습니다. 그래서이 파싱 문제가 있습니다. 소파는 단일 문서를 만들 것을 기대합니다. 따라서 단일 JSON 객체가 필요합니다. 그것들의 배열이 아닙니다. 그게 [{ "key": "value"}]가 Couch로부터 400 HTTP 응답을 반환하는 이유입니다. 배열에 단일 객체가 포함 된 경우에도 마찬가지입니다. API가 배열 길이를 기반으로 정확하게 추론하지 않는다는 것이 다소 까다 롭습니다.하지만 어느 쪽이든 변론 할 수는 있습니다. 아래에서 선택한 답변을 참조하십시오. 이것이 제가 찾고 있던 것입니다. 응답 한 모든 사람들에게 감사드립니다!
보낼 실제 데이터는 어디에서 생성합니까? 왜 NSArray를 사용해야합니까? – borrrden
NSArray를 사용하지 않을 것입니다. HTTP 본문에 JSON을 다음과 같이 포함하고 싶습니다. { "name": "nick"}. 다른 방법으로 JSON 문자열을 deserialize 할 수 있습니까? 어떻게 든 NSDictionary에 직접? – Nick
문제가 무엇인지 이해하지 못합니다. 위의'docData'를 서버에 보낼 수 있어야합니다. 올바른 JSON 문자열입니다. – borrrden