D JSON (WAT?!)
Pavel via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jul 24 08:42:57 PDT 2014
On Thursday, 24 July 2014 at 15:38:06 UTC, John Colvin wrote:
> On Thursday, 24 July 2014 at 15:32:29 UTC, John Colvin wrote:
>> On Thursday, 24 July 2014 at 15:15:37 UTC, Pavel wrote:
>>> Ok, let me start with the sample code:
>>>
>>> import std.stdio;
>>> import std.json;
>>>
>>> void main() {
>>> scope(failure) writeln("FaILED!!");
>>> string jsonStr = `{ "name": "1", "type": "r" }`;
>>> auto parsed = parseJSON(jsonStr);
>>> string s = parsed["fail"].str;
>>> writeln(s == "");
>>> writeln(s is null);
>>> writeln(s);
>>> }
>>>
>>> Running "rdmd app.d" doesn't produce any output.
>>> Can anyone explain such a behavior???
>>>
>>>
>>> PS: Running dmd v2.065 on Linux x64.
>>
>> It's a bug in std.json (you should get a segfault, not no
>> output at all)
>>
>> It is fixed now and I'm pretty sure it will be in 2.066
>>
>> std.json has been improved a lot, but I would still recommend
>> using http://vibed.org/api/vibe.data.json/ instead
>
> perhaps "bug" is too strong a word, but it was a deficiency
> that is now corrected. You will get an exception thrown now and
> everything should work how you expect.
Maybe. But still it's not the way I expect, any time you check
for non-existing property you must consider exception, which is
very heavy to deal with in such a situation. I'd rather expect to
get null, whenever I try to fetch non-existing property, and not
an exception.
That's purely my point, and I don't claim to be right in this
way. It's up to Phobos maintainers to decide how to reprent JSON
parsing results.
More information about the Digitalmars-d-learn
mailing list