2013-08-19 33 views
12

Chạy lệnh sau đây từ một dòng lệnh của Windows sử dụng cURL cố gắng gửi một tài liệu mới với một cơ sở dữ liệu CouchDB hiện có (đặt tên thử nghiệm) thất bại:CouchDB cURL của Windows Command Line không hợp lệ JSON

curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"valid":"json"} 

Nó trả về lỗi:

{"error":"bad_request","reason":"invalid_json"} 

JSON là hợp lệ để những gì cung cấp?

Trả lời

11

Câu trả lời có liên quan đến định dạng của chuỗi JSON trên dòng lệnh. Mặc dù nó là đúng JSON khi bạn gõ nó, dòng lệnh, có vẻ như, phải định dạng lại nó trước khi gửi nó. (Có thể ai đó khác có thể giải thích tại sao nó làm điều này chi tiết hơn.) Để khắc phục điều này bạn cần phải thoát khỏi các trích dẫn của bạn dòng lệnh như vậy:

curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"""valid""":"""json"""} 

Xem thêm dấu ngoặc kép? Điều này sẽ hoạt động và trả về "ok: true" với id và số sửa đổi.

+1

Cách dễ nhất để làm điều này là sử dụng dấu nháy đơn:' -d '{"hợp lệ": "json"}' ' –

+3

Trên thực tế các dấu nháy đơn vẫn ném và lỗi json không hợp lệ khi tôi sử dụng curl từ cửa sổ dòng lệnh nhắc. – skinneejoe

+2

Sử dụng putty chống lại máy từ xa hoặc Cygwin hoặc gitbash nếu bạn chạy cục bộ trên máy Windows. Đây là bảng gian lận CouchDB của tôi http://macgyverdev.blogspot.se/2013/12/couchdb-on-linux-mint.html –

3

Bạn cũng phải báo toàn bộ câu lệnh để hỗ trợ các khoảng trống như: -d "{\" title \ ": \" Không còn gì để mất \ ", \" nghệ sĩ \ ": \" Foo Fighters \ " } "

Các vấn đề liên quan