RFC: std.json sucessor
via Digitalmars-d
digitalmars-d at puremagic.com
Sat Aug 23 10:25:02 PDT 2014
On Saturday, 23 August 2014 at 16:49:23 UTC, Sönke Ludwig wrote:
> Am 22.08.2014 21:00, schrieb "Marc Schütz" <schuetzm at gmx.net>":
>> On Friday, 22 August 2014 at 18:08:34 UTC, Sönke Ludwig wrote:
>>> Am 22.08.2014 19:57, schrieb "Marc Schütz"
>>> <schuetzm at gmx.net>":
>>>> The easiest and cleanest way would be to add a function in
>>>> std.data.json:
>>>>
>>>> auto parse(Target, Source)(Source input)
>>>> if(is(Target == JSONValue))
>>>> {
>>>> return ...;
>>>> }
>>>>
>>>> The various overloads of `std.conv.parse` already have
>>>> mutually
>>>> exclusive template constraints, they will not collide with
>>>> our function.
>>>
>>> Okay, for parse that may work, but what about to!()?
>>
>> What's the problem with to!()?
>
> to!() definitely doesn't have a template constraint that
> excludes JSONValue. Instead, it will convert any struct type
> that doesn't define toString() to a D-like representation.
For converting a JSONValue to a different type, JSONValue can
implement `opCast`, which is the regular interface that
std.conv.to uses if it's available.
For converting something _to_ a JSONValue, std.conv.to will
simply create an instance of it by calling the constructor.
More information about the Digitalmars-d
mailing list