8000 Getting and sending JSON correctly · Issue #2725 · vibe-d/vibe.d · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Getting and sending JSON correctly #2725
Open
@AlexanderZhirov

Description

@AlexanderZhirov

How to properly receive JSON and send it, given that I do it this way?

auto jsr = req.json;

string number = jsr["number"].get!string;
string transport = jsr["transport"].get!string;
string password = jsr["password"].get!string;
string context = jsr["context"].get!string;
string max_contacts = jsr["max_contacts"].get!string;

How to read the array that is inside? It is not possible to lead to the desired type, writes errors.

auto allows = jsr["allows"].get!array;
500 - Internal Server Error

Internal Server Error

Internal error information:
std.json.JSONException@std/json.d(1808): Got JSON of type undefined, expected string.
----------------
../../.dub/packages/vibe-d-0.9.6/vibe-d/data/vibe/data/json.d:1218 const pure @safe void vibe.data.json.Json.checkType!(immutable(char)[]).checkType(immutable(char)[]) [0x55e4fe4075e4]
../../.dub/packages/vibe-d-0.9.6/vibe-d/data/vibe/data/json.d:653 inout pure @property @trusted inout(immutable(char)[]) vibe.data.json.Json.get!(immutable(char)[]).get() [0x55e4fe4074c7]
source/app.d:294 void app.write(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) [0x55e4fe3f276c]
source/app.d:107 void app.postReq(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) [0x55e4fe3f0ca2]
/usr/include/dlang/dmd/std/functional.d-mixin-1677:1688 void function(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) std.functional.DelegateFaker!(void function(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)*).DelegateFaker.doIt [0x55e4fe3fff97]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/router.d:274 @trusted void vibe.http.router.URLRouter.handlerDelegate!(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).handlerDelegate(void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse)).__lambda3!(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda3(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) [0x55e4fe403980]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/router.d:218 @safe bool vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse).__lambda6!(ulong, immutable(char)[][]).__lambda6(ulong, scope immutable(char)[][]) [0x55e4fe5064ee]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/router.d:734 const @safe bool vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.doMatch(immutable(char)[], scope bool delegate(ulong, scope immutable(char)[][]) @safe) [0x55e4fe508e30]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/router.d:667 @safe bool vibe.http.router.MatchTree!(vibe.http.router.Route).MatchTree.match(immutable(char)[], scope bool delegate(ulong, scope immutable(char)[][]) @safe) [0x55e4fe508653]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/router.d:211 @safe void vibe.http.router.URLRouter.handleRequest(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) [0x55e4fe506160]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/server.d:2304 @safe bool vibe.http.server.handleRequest(vibe.internal.interfaceproxy.InterfaceProxy!(vibe.core.stream.Stream).InterfaceProxy, vibe.core.net.TCPConnection, vibe.http.server.HTTPServerContext, ref vibe.http.server.HTTPServerSettings, ref bool, scope stdx.allocator.IAllocator) [0x55e4fe5abe98]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/server.d:253 @trusted void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerContext).__lambda14() [0x55e4fe5aa263]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/server.d:245 @safe void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPServerContext) [0x55e4fe5a9e60]
../../.dub/packages/vibe-d-0.9.6/vibe-d/http/vibe/http/server.d:2042 nothrow @safe void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, void delegate(vibe.http.server.HTTPServerRequest, vibe.http.server.HTTPServerResponse) @safe).doListen(vibe.http.server.HTTPServerContext, bool, bool, bool).__lambda6(vibe.core.net.TCPConnection) [0x55e4fe513cca]
../../.dub/packages/vibe-core-2.2.0/vibe-core/source/vibe/core/task.d:737 nothrow void vibe.core.task.TaskFuncInfo.set!(void delegate(vibe.core.net.TCPConnection) nothrow @safe, vibe.core.net.TCPConnection).set(ref void delegate(vibe.core.net.TCPConnection) nothrow @safe, ref vibe.core.net.TCPConnection).callDelegate(ref vibe.core.task.TaskFuncInfo) [0x55e4fe6e619c]
../../.dub/packages/vibe-core-2.2.0/vibe-core/source/vibe/core/task.d:758 void vibe.core.task.TaskFuncInfo.call() [0x55e4fe6b9eb1]
../../.dub/packages/vibe-core-2.2.0/vibe-core/source/vibe/core/task.d:457 nothrow void vibe.core.task.TaskFiber.run() [0x55e4fe6b909e]
??:? void core.thread.context.Callable.opCall() [0x55e4fe748524]
??:? fiber_entryPoint [0x55e4fe7a7a63]

There are no examples in the documentation of how to get an array in the desired format.

auto allows = jsr["allows"].get!Json[];
../../.dub/packages/vibe-d-0.9.6/vibe-d/data/vibe/data/json.d(1124,8): Error: static assert:  "Unsupported JSON type 'Json'. Only bool, long, std.bigint.BigInt, double, string, Json[] and Json[string] are allowed."
../../.dub/packages/vibe-d-0.9.6/vibe-d/data/vibe/data/json.d(1200,36):        instantiated from here: `typeId!(Json)`
../../.dub/packages/vibe-d-0.9.6/vibe-d/data/vibe/data/json.d(653,4):        instantiated from here: `checkType!(Json)`
source/app.d(294,32):        instantiated from here: `get!(Json)`
/usr/bin/dmd failed with exit code 1.

Are there any clearer examples about converting a large number of variables to Json? Without using prepared structures.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0