Json test = Json.emptyArray;
test ~= "aaa";
test ~= "bbb";
test ~= "ccc";
writeln(test);
输出:["aaa","bbb","ccc"]
如何检查JSON数组中是否存在元素?
但如何我可以检查这个数组有元素?我无法弄清楚如何在JSON数组中使用canFind
。我正在使用vibed json module。
if(test.get!string[].canFind("aaa"))
{
writeln("founded");
}
不起作用:Got JSON of type array, expected string.
如果要做这样的:
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."
随着to!string
和toString
方法的所有工作:
Json test = Json.emptyArray;
test ~= "aaa";
test ~= "bbb";
test ~= "ccc";
writeln(to!string(test));
if(test.toString.canFind("aaa"))
{
writeln("founded");
}
但如果我这样做,里面的foreach:
foreach(Json v;visitorsInfo["result"])
{
if((v["passedtests"].toString).canFind("aaa"))
{
writeln("founded");
}
}
我越来越:Error: v must be an array or pointer type, not Json
。怎么了?
你可以尝试把括号括在你的字符串[]?像.get! (string [])。canFind –
我更新了代码。将数组传递给'writeln'可能会导致错误吗?它支持打印数组吗? –
对,对不起。在电话中,所以get!(string [])将不起作用。它必须转换为以下类型之一:http://vibed.org/api/vibe.data.json/Json.get –