JSON Strigify возвращает только родитель - PullRequest
0 голосов
/ 15 октября 2019

Я пытался использовать JSON strigify, но он возвращает мне только:

{"name":"nipahVirus","children":{}}

Это из-за того, что мой тип данных формата преобразован неправильно? Или любые места, которые я сделал. Был бы признателен, если кто-то может помочь мне. Я работаю над преобразованием CSV в JSON.

Вот мой код.

    function findSpecies(name){
    var objspecies = {};
    Papa.parse("nipahdata.csv", {
        download: true,
        complete: function(results) {

            for(i = 0;i < results.data.length; i ++){
                var species = {};    
                if(name == results.data[i][0]){
                species["name"] = results.data[i][1];
                species["niv_status"] = results.data[i][2];
                objspecies[results.data[i][0]] = species; 
                }
            }

        }
    });    
    return objspecies;
}        

var nipahVirus_obj = {};
var genus = {};
Papa.parse("nipahdata.csv", {
    download: true,
    complete: function(results) {
        var currgenus = "";        
        for(i = 0;i < results.data.length; i ++){


            if(results.data[i][0] == "")
            continue; 

            if(currgenus != results.data[i][0]){
                var objgenus = {};
                currgenus = results.data[i][0];
                objgenus["name"] = results.data[i][0];
                objgenus["children"]=findSpecies(results.data[i][0]);
                genus[results.data[i][0]] = objgenus;
            }

        }

    }
});
        nipahVirus_obj["name"] = "nipahVirus";
        nipahVirus_obj["children"] = genus;    
        var nipahVirus_JSON = JSON.stringify(nipahVirus_obj);
        console.log(nipahVirus_JSON);

CSV-это что-то вроде этого, который содержит три столбца:

Genus,Species Name,NiV status
Craseonycteris,Craseonycteris_thonglongyai,0
Emballonura,Emballonura_alecto,0
Emballonura,Emballonura_dianae,0
Emballonura,Emballonura_furax,0
Emballonura,Emballonura_raffrayana,0
Emballonura,Emballonura_serii,0
Emballonura,Emballonura_monticola,0
Emballonura,Emballonura_beccarii,0
Emballonura,Emballonura_semicaudata,0
Mosia,Mosia_nigrescens,0
Saccolaimus,Saccolaimus_flaviventris,0
Saccolaimus,Saccolaimus_saccolaimus,0

1 Ответ

0 голосов
/ 15 октября 2019

В функции findSpecies есть асинхронный прогресс, и objspecies, который вы на самом деле возвращаете, это {}, вы определили, а не данные, которые возвращаются в complete.вы можете определить функцию обратного вызова и вызвать ее полностью. вот так, поскольку есть два поста, я не могу отладить его, вы должны запустить его в своей среде самостоятельно и проверить его.

function findSpecies(name){
    var objspecies = {};
    Papa.parse("nipahdata.csv", {
        download: true,
        complete: function(results) {

            for(i = 0;i < results.data.length; i ++){
                var species = {};    
                if(name == results.data[i][0]){
                species["name"] = results.data[i][1];
                species["niv_status"] = results.data[i][2];
                objspecies[results.data[i][0]] = species; 
                }
            }
            callback(objspecies)
        }
    });    
}        
var objgenus = {};
var nipahVirus_obj = {};
var genus = {};
Papa.parse("nipahdata.csv", {
    download: true,
    complete: function(results) {
        var currgenus = "";        
        for(i = 0;i < results.data.length; i ++){


            if(results.data[i][0] == "")
            continue; 

            if(currgenus != results.data[i][0]){
                
                currgenus = results.data[i][0];
                objgenus["name"] = results.data[i][0];
                findSpecies(results.data[i][0]);
            }

        }

    }
});

      function callback(data){
        objgenus["children"]=data
        genus[results.data[i][0]] = objgenus;
        nipahVirus_obj["name"] = "nipahVirus";
        nipahVirus_obj["children"] = genus;    
        var nipahVirus_JSON = JSON.stringify(nipahVirus_obj);
        console.log(nipahVirus_JSON);
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...