digitalmars.D.learn - Strange behavior of cast(int[]) json["my int list"].array
- Enjoys Math (22/22) Nov 15 2017 I had it working in an earlier program.
- Basile B. (17/39) Nov 15 2017 Hi, your cast is invalid because each element of "array" is
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?
Nov 15 2017
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); } ---
Nov 15 2017