Не удается найти другой поддерживающий объект '[object Object]' типа 'object'. -> VirusTotal JSON для отображения в таблице - PullRequest
2 голосов
/ 10 марта 2020

Я пытаюсь проанализировать данные из VirusTotal JSON для отображения в таблице. Но я не могу использовать ngfor

 scan(file) {

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

    }

В Html Файл

<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 Ответ

1 голос
/ 10 марта 2020

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
        };
    });

});
...