2010-07-27 8 views
16

Questo è leggermente diverso dalla domanda "Errore su 'JSON non valido' con vista couchDB ma il json va bene": non sto provando a caricare un file, ma solo a un documento semplice.Ricostruzione di errore "JSON non valido UTF-8" da CouchDb sebbene JSON stia bene? Qualche idea?

L'esempio che sto cercando di utilizzare è in realtà il libro di O'Reilly "CouchDB: The Definitive Guide" e sono abbastanza sicuro di averlo provato prima e di averlo fatto funzionare. Ecco il comando:

curl -X PUT http://username:[email protected]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d '{"title":"There is Nothing Left to Lose","artist":"Foo Fighters"}' 

Gli album del database esistono e il nome utente e la password sono corretti. Ho verificato questo con JSONLint e JSON è valido e sono in perdita ... presumibilmente c'è un problema con il server CouchDB stesso ma sembra che funzioni correttamente ... qualche idea? Questo mi sta facendo impazzire!

Grazie

+0

quali sono le intestazioni di risposta dicendo? – Anders

+0

Hai aggiornato il tuo couchdb? Ho avuto questo problema dopo un aggiornamento da 0.10 a 1.0. Cosa succede se si esegue la suite di test? – filippo

risposta

22

Grazie ragazzi. Risulta che si tratta di un problema con la citazione di fuga. Ecco la risposta che ho ricevuto da David sulla mailing list degli utenti CouchDB:

Questa è una cosa per quanto riguarda le finestre citando - un vero e proprio PITA. Purtroppo la shell cmd.exe su Windows non analizza correttamente . Le regole per quando in fuga con un "" o un^"o \" sono un po 'vago, ma questo funziona:

C: \ tmp> ricciolo -X PUT http://username:[email protected]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d "{\" titolo \ ": \" Non c'è niente da perdere \ ", \" artista \ ": \" Foo Combattenti \ "}" {"ok": vero, "id": "6e1295ed6c29495e54cc05947f18c8af", "rev": " 1-4b39c2971c9ad54cb37e08fa02fec636 "}

C: \ tmp>

"fondamentalmente è necessario \" fuga \" all \ "citazioni \" all'interno del tuo JSON"

Questo risolve il mio problema

+2

Non c'è altro modo? Voglio dire, sfuggire alle citazioni sembra un PITA. – Das

+0

Questa è una limitazione della shell. Un'alternativa sarebbe mettere il JSON in un file e usare -d @filename – AlexT

+0

@Das: l'ho risolto installando Git. Include Git Bash con arricciatura. – null

0

Ho anche incontrato lo stesso problema, dopo aver cercato un po ', ho trovato su Git Bash in altra domanda. Git bash ha il comando di arricciare dentro. Git bash è incluso nel programma di installazione di Git.

0

Devi inserire il carattere di escape ** e inoltre non dimenticare di inserire dopo -d tutte le cose in ** "". Ossia: arricciatura -X PUT http://127.0.0.1:5984/my_database/ "001" -d "{\" Nome \ ": \" Suresh \ ", \" età \ ": \" 32 \ ", \" Designazione \ ": \" Manager associato \ "}"

Problemi correlati