How to check if JSONValue of type object has a key?

2015-10-06 Thread Borislav Kosharov via Digitalmars-d-learn
I'm using std.json for parsing json. I need to check if a 
specific string key is in JSONValue.object. The first thing I 
tried was:


JSONValue root = parseJSON(text);
if(root["key"].isNull == false) {
//do stuff with root["key"]
}

But that code doesn't work, because calling root["key"] will 
throw an exception of key not fount if "key" isn't there.


I need some method `root.contains("key")` method to check if the 
object has a key.


Thanks in advance!



Re: How to check if JSONValue of type object has a key?

2015-10-06 Thread via Digitalmars-d-learn
On Tue, Oct 06, 2015 at 08:28:46PM +, Borislav Kosharov via 
Digitalmars-d-learn wrote:
> JSONValue root = parseJSON(text);
> if(root["key"].isNull == false) {

try

if("key" in root) {
// it is there
} else {
// it is not there
}


you can also do

if("key" !in root) {}



Re: How to check if JSONValue of type object has a key?

2015-10-06 Thread Fusxfaranto via Digitalmars-d-learn
On Tuesday, 6 October 2015 at 20:44:30 UTC, via 
Digitalmars-d-learn wrote:
On Tue, Oct 06, 2015 at 08:28:46PM +, Borislav Kosharov via 
Digitalmars-d-learn wrote:

JSONValue root = parseJSON(text);
if(root["key"].isNull == false) {


try

if("key" in root) {
// it is there
} else {
// it is not there
}


you can also do

if("key" !in root) {}


Additionally, just like associative arrays, if you need to access 
the value, you can get a pointer to it with the in operator (and 
if the key doesn't exist, it will return a null pointer).


const(JSONValue)* p = "key" in root;
if (p)
{
// key exists, do something with p or *p
}
else
{
// key does not exist
}


Re: How to check if JSONValue of type object has a key?

2015-10-06 Thread Marco Leise via Digitalmars-d-learn
Am Tue, 06 Oct 2015 21:39:28 +
schrieb Fusxfaranto :

> Additionally, just like associative arrays, if you need to access 
> the value, you can get a pointer to it with the in operator (and 
> if the key doesn't exist, it will return a null pointer).
> 
> const(JSONValue)* p = "key" in root;
> if (p)
> {
>  // key exists, do something with p or *p
> }
> else
> {
>  // key does not exist
> }

And you could go further and write

if (auto p = "key" in root)
{
 // key exists, do something with p or *p
}
else
{
 // key does not exist
}

-- 
Marco



Re: How to check if JSONValue of type object has a key?

2015-10-08 Thread Borislav Kosharov via Digitalmars-d-learn

Thanks guys that was I was looking for!