Ich muss eine Reihe von Daten in die Datenbank eingeben. Die Benutzeroberfläche zur Eingabe der Daten ist nicht für die Masseneingabe geeignet, daher versuche ich, ein Befehlszeilenäquivalent zu formulieren. Wenn ich die Netzwerkanforderung der Benutzeroberfläche in Chrome untersuche, wird eine PUT-Anforderung eines JSON-Objekts angezeigt. Wenn ich versuche, die Anfrage zu replizieren
curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
Ich bekomme eine Fehlermeldung
Curl: (3) [Globbing] verschachtelte Klammern werden an Position X nicht unterstützt
Wobei X die Zeichenposition des ersten "[" ist.
Wie kann ich ein JSON-Objekt mit einem Array platzieren?
Obwohl der ursprüngliche Beitrag andere Probleme hatte (dh das fehlende "-d"), ist die Fehlermeldung allgemeiner.
Dies liegt daran, dass geschweifte Klammern {} und eckige Klammern [] spezielle Globbing-Zeichen in Curl sind. Verwenden Sie die Option " -g ", um dieses Globbing auszuschalten .
Beispielsweise schlägt die folgende Solr-Facettenabfrage fehl, ohne dass "-g" das Curl-Globbing deaktiviert :
curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
quelle
-g
wie erwartet gearbeitet. Danke @YonikEs sollte erwähnt werden, dass der
Accept
Header dem Server etwas darüber sagt, was wir zurücknehmen, während der relevante Header in diesem Zusammenhang istContent-Type
Es ist oft ratsam anzugeben,
Content-Type
wieapplication/json
beim Senden von JSON. Für Curl lautet die Syntax:Der vollständige Curl-Befehl lautet also:
quelle
Versuchen Sie, ein einfaches Anführungszeichen anstelle von doppelten Anführungszeichen zusammen mit -g zu verwenden
Das folgende Szenario hat bei mir funktioniert
MIT
Dies hat insbesondere meinen Fehler beim Curl-Befehl behoben : Ein falscher URL-Doppelpunkt ist das erste Zeichen
quelle
Das einzige, was geholfen hat, ist die Verwendung einer JSON-Datei anstelle von JSON-Text. Basierend auf dem Senden von Dateiinhalten als Body-Entität mit cURL
quelle