using vibe.d to parse json

Laeeth Isharc via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Mar 23 22:36:21 PDT 2015


On Tuesday, 24 March 2015 at 04:53:39 UTC, Laeeth Isharc wrote:
> Hi.
>
> struct RawGoogleResults
> {
> 	string version_;
> 	string status;
> 	string sig;
> 	string[string][][string] table;
> }
>
> enum json = 
> "{"version":"0.6","status":"ok","sig":"717451517","table":{"cols":[{"id":"date","label":"Date","type":"date","pattern":""},{"id":"query0","label":"euro 
> crisis","type":"number","pattern":""}],"rows":[{"c":[{"v":"2004-01-02"),"f":"January 
> 2004"},{"v":0.0,"f":"0"}]},{"c":[{"v":"2004-02-02"),"f":"February 
> 2004"},{"v":0.0,"f":"0"}]},{"c":[{"v":"2004-03-02"),"f":"March 
> 2004"},{"v":0.0,"f":"0"}]},{"c":[{"v":"2004-04-02")...
>
> auto table = deserialize!(JsonSerializer, 
> RawGoogleResults)(json);
>
> I cannot pass a string to deserialize (the documentation 
> suggests an input range should be fine):
> http://vibed.org/api/vibe.data.serialization/deserialize
>
> I have a feeling maybe deserialize doesn't do what I want, but 
> what should I be using instead.  (I would like to parse the 
> json and shove the results in the struct above).
>
>
> Thanks.
>
>
> Laeeth.

Okay - figured it out from the source code.

auto results = deserialize!(JsonStringSerializer!string, 
RawGoogleResults)(json);

and easier to write:

struct RawGoogleResults
{
	string version_;
	string status;
	string sig;
	//Json!array[string][][string] table;
	Json table;
}



More information about the Digitalmars-d-learn mailing list