代码之家  ›  专栏  ›  技术社区  ›  techno

找不到类型为“object”的不同支持对象“[object]”。-->要在表中显示的VirusTotal JSON

  •  0
  • techno  · 技术社区  · 5 年前

    我正在尝试解析virustotaljson中的数据,以便在桌子。但是我不能用 ngfor公司

     scan(file) {
    
        this.http.get("api/Scanner/").subscribe(result => {
        this.value = result;
        console.log(this.value.scans);    
        });
    
        }
    

    <li *ngFor="let item of this.value.scans">
      {{item.version}}
    </li>
    

       public class ScannerController : Controller
            {   [HttpGet]         
                public async Task<IActionResult> ScanAsync(string file_id)
                {
                    //New Update //
                    file_id = "./wwwroot/Upload/1";
                    VirusTotal virusTotal = new VirusTotal("mykey");
                    // virusTotal.UseTLS = true;         
                    FileStream stream = System.IO.File.OpenRead(file_id);
                    byte[] fileBytes = new byte[stream.Length];
                   // stream.Seek(0, SeekOrigin.Begin);
                    stream.Read(fileBytes, 0, fileBytes.Length);
    
                    VirusTotalNet.Results.FileReport report = await virusTotal.GetFileReportAsync(fileBytes);
                    bool hasFileBeenScannedBefore = report.ResponseCode == FileReportResponseCode.Present;
    
                    Console.WriteLine("File has been scanned before: " + (hasFileBeenScannedBefore ? "Yes" : "No"));
    
                    //If the file has been scanned before, the results are embedded inside the report.
                    if (hasFileBeenScannedBefore)
                    {
                       return Ok(report);
                    }
                    else
                    {
                        ScanResult fileResult = await virusTotal.ScanFileAsync(fileBytes,"1");
                        return Ok(fileResult);
    
                    }
    
                }
            }
    

    错误

    UploadComponent.html:8 ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
    

    {Bkav: {…}, TotalDefense: {…}, MicroWorld-eScan: {…}, FireEye: {…}, CAT-QuickHeal: {…}, …}
    Bkav: {detected: false, version: "1.3.0.9899", result: null, update: "20200221"}
    TotalDefense: {detected: false, version: "37.1.62.1", result: null, update: "20200225"}
    MicroWorld-eScan: {detected: false, version: "14.0.409.0", result: null, update: "20200226"}
    FireEye: {detected: false, version: "29.7.0.0", result: null, update: "20200226"}
    CAT-QuickHeal: {detected: false, version: "14.00", result: null, update: "20200225"}
    McAfee: {detected: false, version: "6.0.6.653", result: null, update: "20200226"}
    Malwarebytes: {detected: false, version: "3.6.4.335", result: null, update: "20200225"}
    Zillya: {detected: false, version: "2.0.0.4034", result: null, update: "20200225"}
    SUPERAntiSpyware: {detected: false, version: "5.6.0.1032", result: null, update: "20200221"}
    Sangfor: {detected: false, version: "1.0", result: null, update: "20200221"}
    K7AntiVirus: {detected: false, version: "11.96.33381", result: null, update: "20200226"}
    K7GW: {detected: false, version: "11.96.33380", result: null, update: "20200226"}
    BitDefenderTheta: {detected: false, version: "7.2.37796.0", result: null, update: "20200211"}
    F-Prot: {detected: false, version: "4.7.1.166", result: null, update: "20200226"}
    Symantec: {detected: false, version: "1.11.0.0", result: null, update: "20200226"}
    ESET-NOD32: {detected: false, version: "20902", result: null, update: "20200226"}
    Baidu: {detected: false, version: "1.0.0.2", result: null, update: "20190318"}
    TrendMicro-HouseCall: {detected: false, version: "10.0.0.1040", result: null, update: "20200226"}
    Avast: {detected: false, version: "18.4.3895.0", result: null, update: "20200226"}
    ClamAV: {detected: false, version: "0.102.2.0", result: null, update: "20200225"}
    Kaspersky: {detected: false, version: "15.0.1.13", result: null, update: "20200226"}
    BitDefender: {detected: false, version: "7.2", result: null, update: "20200226"}
    

    更新: enter image description here

    1 回复  |  直到 5 年前
        1
  •  1
  •   Bunyamin Coskuner    5 年前

    this.value.scans 不是数组,但它是对象。我们把它转换成一个数组。

    this.http.get("api/Scanner/").subscribe(result => {
        this.value = result;
        // this line will transform your object to an array
        this.value.scans = Object.keys(this.value.scans).map(key => {
            return {
                ...this.value.scans[key],
                scannerName: key
            };
        });
    
    });