D JSON (WAT?!)

Ary Borenszweig via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jul 25 17:26:07 PDT 2014


On 7/25/14, 1:06 PM, Justin Whear wrote:
> On Thu, 24 Jul 2014 22:00:43 +0000, Pavel wrote:
>
>> On Thursday, 24 July 2014 at 16:09:25 UTC, Justin Whear wrote:
>>> On Thu, 24 Jul 2014 16:04:01 +0000, Pavel wrote:
>>>>
>>>> Thanks to all you folks who explained "in" operator for me. My bad.
>>>> Let's focus on the real problem, which is JSON wrapper class. Is it
>>>> needed? Wouldn't it be better to get AA from parseJSON?
>>>
>>> The following are valid JSON:
>>>
>>> auto json1 = parseJSON(`1`);
>>> auto json2 = parseJSON(`"foo"`);
>>> auto json3 = parseJSON(`[1, 2, 3]`);
>>>
>>> None of these fit naturally into an JSONValue[string] return type.
>>
>> Now we figured it out about JSON, but in that case:
>> Why not just use std.variant.Variant construct instead of JSONValue?
>
> While I suspect the reason is simply historical, it might be a type-
> safety/information problem as well.  Variant can store values of
> essentially any type whereas JSON is strictly limited to a handful of
> simple types.  Going from a JSON string to Variant might not be
> troublesome, but going from Variant to JSON string almost certainly would.
>
> That said, if you think it's worth it, I'd be up for reviewing a revamped
> std.json.

Or use Algebraic, but it currently doesn't support recursive type 
definitions.

I think this would be the best way.



More information about the Digitalmars-d-learn mailing list