November 15, 2017 Strange behavior of cast(int[]) json["my int list"].array | ||||
---|---|---|---|---|
| ||||
I had it working in an earlier program. Now I have: main.d ------ import std.json; import std.file; int main() { JSONValue settings; settings = parseJSON("settings.txt"); auto intList = cast(int[]) settings["int list"].array; writeln(intList); readln(); } for input: settings.txt ------------ { "int list" : [1,2,3,4,5] } printing: [1,0,2,0,2,0,2,0,3,0,2, ...] (length = 20) Should I access each member int the array individually? |
November 15, 2017 Re: Strange behavior of cast(int[]) json["my int list"].array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Enjoys Math | On Wednesday, 15 November 2017 at 19:54:20 UTC, Enjoys Math wrote:
> I had it working in an earlier program.
>
> Now I have:
>
>
> main.d
> ------
>
> import std.json;
> import std.file;
>
> int main() {
> JSONValue settings;
>
> settings = parseJSON("settings.txt");
> auto intList = cast(int[]) settings["int list"].array;
>
> writeln(intList);
>
> readln();
> }
>
>
> for input:
>
> settings.txt
> ------------
> {
> "int list" : [1,2,3,4,5]
> }
>
>
> printing:
>
> [1,0,2,0,2,0,2,0,3,0,2, ...] (length = 20)
>
>
> Should I access each member int the array individually?
Hi, your cast is invalid because each element of "array" is itself a JSONValue.
You're even lucky to have something that resembles to the input ;)
Try rather:
---
import std.json, std.stdio, std.algorithm, std.array;
void main() {
JSONValue settings;
settings = parseJSON(`{"int list" : [1,2,3,4,5]}`);
// take the int value of each individal element to make the array.
auto intList = settings["int list"].array.map!(a => a.integer).array;
writeln(intList);
}
---
|
Copyright © 1999-2021 by the D Language Foundation