Json test = Json.emptyArray;
test ~= "aaa";
test ~= "bbb";
test ~= "ccc";
writeln(test);
Ausgang: ["aaa","bbb","ccc"]
Wie überprüft man, ob ein Element im JSON-Array existiert?
aber wie kann ich überprüfen, wenn dieses Array-Element haben? Ich kann mir nicht vorstellen, wie man canFind
mit JSON-Array verwendet. Ich verwende vibed json module.
if(test.get!string[].canFind("aaa"))
{
writeln("founded");
}
funktioniert nicht: Got JSON of type array, expected string.
Wenn wie dies zu tun:
if(test.get!(string[]).canFind("aaa"))
{
writeln("founded");
}
Error: static assert "Unsupported JSON type 'string[]'. Only bool, long, std.bigint.BigInt, double, string, Json[] and Json[string] are allowed."
Mit to!string
und toString
Methoden alle Arbeiten:
Json test = Json.emptyArray;
test ~= "aaa";
test ~= "bbb";
test ~= "ccc";
writeln(to!string(test));
if(test.toString.canFind("aaa"))
{
writeln("founded");
}
Aber wenn ich es innen foreach tun:
foreach(Json v;visitorsInfo["result"])
{
if((v["passedtests"].toString).canFind("aaa"))
{
writeln("founded");
}
}
Ich erhalte: Error: v must be an array or pointer type, not Json
. Was ist los mit dir?
Können Sie versuchen, Klammern um Ihre Zeichenfolge [] zu setzen? Wie .get! (string []). canFind –
Ich habe den Code aktualisiert. Ist es möglich, dass ich Fehler bekomme, wenn ich Array an 'writeln' übergebe? Ist es das Drucken von Arrays? –
Ja, tut mir leid. War am Telefon, also los! (String []) wird nicht funktionieren. Es muss in einen dieser Typen konvertiert werden: http://vibed.org/api/vibe.data.json/Json.get –