Thread overview
std.json / nested key/value access?
Nov 15, 2019
Robert M. Münch
Nov 15, 2019
Robert M. Münch
November 15, 2019
I have:

 JSONValue j = parseJSON(json_string).object;

 writeln(j); 							// works
 writeln(j["a"]); 					// works
 writeln(j["a"].object["b"]); 	// bombs

Runtime error: std.json.JSONException@std/json.d(276): JSONValue is not an object

How can I access a nested JSON key/value using something that comes close to a path notation?

-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster

November 15, 2019
On 11/15/19 12:05 PM, Robert M. Münch wrote:
> JSONValue j = parseJSON(json_string).object;
> 
>   writeln(j);                             // works
>   writeln(j["a"]);                     // works
>   writeln(j["a"].object["b"]);     // bombs

auto json_string = `{"a": {"b": 1}}`;

Results with your code as:

{"a":{"b":1}}
{"b":1}
1

Maybe your "a" value is not an object?

-Steve
November 15, 2019
On 2019-11-15 17:23:38 +0000, Steven Schveighoffer said:

> On 11/15/19 12:05 PM, Robert M. Münch wrote:
>> JSONValue j = parseJSON(json_string).object;
>> 
>>  writeln(j);                             // works
>>  writeln(j["a"]);                     // works
>>  writeln(j["a"].object["b"]);     // bombs
> 
> Maybe your "a" value is not an object?

Thanks, it's an array... why ever... I need to use:

	writeln(j["a"][0]["b"]);

Wasn't that obvious, because it's a big JSON structure.

-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster