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
Permalink
Reply