Json parse result from virustotal api
I was playing around with the virustotal api today while becoming back the result in this form:
{ "permalink" : "http://www.virustotal.com/file-scan/report.html?id=7b6b268cbca9d421aabba5f08533d3dcaba50e0f7887b07ef2bd66bf218b35ff-1304089592",
"report" : [ "2011-04-29 15:06:32",
{ "AVG" : "Exploit_c.TVH",
"AhnLab-V开发者_开发知识库3" : "PDF/Exploit",
"AntiVir" : "EXP/Pidief.UK",
"Antiy-AVL" : "Trojan/win32.agent",
"Avast" : "JS:Pdfka-gen",
"Avast5" : "JS:Pdfka-gen",
"BitDefender" : "Exploit.PDF-JS.Gen",
"CAT-QuickHeal" : "",
"ClamAV" : "",
"Comodo" : "Exploit.JS.Pidief.~AWQ",
"DrWeb" : "",
"Emsisoft" : "Exploit.JS.Pdfka!IK",
"F-Prot" : "",
"F-Secure" : "Exploit:W32/Pidief.DEE",
"Fortinet" : "",
"GData" : "",
"Ikarus" : "Exploit.JS.Pdfka",
"Jiangmin" : "",
"K7AntiVirus" : "",
"Kaspersky" : "Exploit.JS.Pdfka.dnc",
"McAfee" : "",
"McAfee-GW-Edition" : "",
"Microsoft" : "Exploit:Win32/Pdfjsc.NJ",
"NOD32" : "PDF/Exploit.Pidief.PGD",
"Norman" : "",
"PCTools" : "Trojan.Pidief",
"Panda" : "",
"Prevx" : "",
"Rising" : "",
"SUPERAntiSpyware" : "",
"Sophos" : "Troj/PDFJs-RD",
"Symantec" : "Trojan.Pidief",
"TheHacker" : "",
"TrendMicro" : "TROJ_PIDIEF.VTG",
"TrendMicro-HouseCall" : "TROJ_PIDIEF.VTG",
"VBA32" : "",
"VIPRE" : "Exploit.PDF-JS.Gen (v)",
"ViRobot" : "PDF.S.Exploit.74634",
"VirusBuster" : "",
"eSafe" : "",
"eTrust-Vet" : ""
}
],
"result" : 1
}
I would like to know how one can parse this result to fill a memo like:
Memo1.Lines.Add(Format('Antivirus: %0s Result: %1s', [...]));
Well, I really have no clue about all the JSon components which might be around to maybe someone can direct me to the right direction here?
Kindest regards,
H.Meiser
Parsing Json string is not difficult, you can use the DBXJSON
unit included since delphi 2010.
check this sample code
Uses
DBXJSON;
procedure TForm1.ParseString(const AString: string);
var
json : TJSONObject;
jPair : TJSONPair;
jValue : TJSONValue;
jcValue : TJSONValue;
l,i : Integer;
begin
json := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(AString),0) as TJSONObject;
try
//get the pair to evaluate in this case the index is 1
jPair := json.Get(1);
//cast the JsonValue to TJSONArray to access the elements of the array
jValue := TJSONArray(jPair.JsonValue).Get(1);
l:=TJSONArray(jValue).Size;
for i:=0 to l-1 do
begin
//get the i element of the array
jcValue := TJSONArray(jValue).Get(i);
//get the pair pointing to the i element
jPair := TJSONPair(jcValue);
//show the result
Memo1.Lines.Add(Format('Antivirus %s Result %s',[jPair.JsonString.Value,jPair.JsonValue.Value]));
end;
finally
json.Free;
end;
end;
As additional recommendation you must read a Json tutorial to learn how interpret the Json format and in this way you must be preparated to use any library available.
I recommend the open source JSON library SuperObject and online JSON inspectors like http://jsonviewer.stack.hu/ or http://json.parser.online.fr/ (this editor has a very useful option which adds type information to the view)
精彩评论