Was ich will ist eine POST-Anfrage in kemal, wo der Körper eine bestimmte Anzahl von Schlüsseln/Werte, die ich will, und dann ein beliebiges JSON-Objekt, das ich nur stringifizieren und weitergeben und später wieder zu JSON parsen.Get JSON in POST in kemal
Mein Problem ist, dass ich anscheinend die Typen nicht richtig bekommen kann. Denken Sie an einen potenziellen JSON Körper wie folgt aus:
{
"endpoint": "http://example.com",
"interval": 500,
"payload": {
"something": "else",
"more": {
"embedded": 1
}
}
}
Nun, was ich zu tun versucht, ist die folgende:
require "kemal"
post "/schedule" do |env|
endpoint = env.params.json["endpoint"].as(String)
interval = env.params.json["interval"].as(Int64)
payload = String.from_json(env.params.json["payload"].as(JSON::Any))
# ... move things along
env.response.content_type = "application/json"
{ id: id }.to_json
end
Kemal.run
nun offenbar, was ich scheine immer, wenn „Nutzlast“ Zugriff ist etwas vom Typ Hash(String, JSON::Type)
, was mich ein wenig verwirrt.
Irgendwelche Ideen, wie ich in der Lage wäre, nur einen Sub-JSON aus dem Anfragetext zu bekommen, ihn in String umzuwandeln und zurück zu JSON?
Hmm, aber jetzt 'payload_as_string.to_json' gibt einen String, kein gültiges Dokument json ... wie folgt aus: "{\" etwas \“ => \ "else \", \ "mehr \" => {\ "embedded \" => 1}} " – tpei
Die Antwort wurde aktualisiert –