www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to detect whethere if a JSON node exists

reply Adnan <relay.public.adnan outlook.com> writes:
In the following code, I want to process an json array (returned 
by the value of "posts") that might or might not have "com" key. 
If a "com" key does not exist, I want to ignore that item in the 
json array.

         uint[string] wordTable;

	const auto j = parseJSON(get(link));
	foreach (node; j["posts"].array()) {
		import std.stdio : writeln;
		import std.utf : decode;

		import std.algorithm: splitter;
		foreach(word; getStr(node["com"].str()).splitter(' ')) { // 
here!
			if (word != "") wordTable.require(word, 0)++;
		}
	}

Now in the above inner loop getStr(node["com"].str()) crashes in 
runtime if an array does not contain "com" node. I want to avoid 
that. How should I proceed?
Apr 12 2020
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
On Monday, 13 April 2020 at 02:20:39 UTC, Adnan wrote:
 Now in the above inner loop getStr(node["com"].str()) crashes 
 in runtime if an array does not contain "com" node. I want to 
 avoid that. How should I proceed?
Try: if("com" in node) { }
Apr 12 2020
parent Adnan <relay.public.adnan outlook.com> writes:
On Monday, 13 April 2020 at 02:22:33 UTC, Adam D. Ruppe wrote:
 On Monday, 13 April 2020 at 02:20:39 UTC, Adnan wrote:
 Now in the above inner loop getStr(node["com"].str()) crashes 
 in runtime if an array does not contain "com" node. I want to 
 avoid that. How should I proceed?
Try: if("com" in node) { }
Came back here to say that I found exactly this solution. Thanks.
Apr 12 2020