JSON Stringify 仅返回父级

Posted

技术标签:

【中文标题】JSON Stringify 仅返回父级【英文标题】:JSON Strigify returns only parent 【发布时间】:2020-02-11 15:14:44 【问题描述】:

我尝试使用 JSON srigify,但它只返回给我:

"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

【问题讨论】:

您尝试解析的 csv 格式是什么样的? @Geshode 我已经添加了 csv 格式 【参考方案1】:

findSpecies函数有一个异步进度,你返回的objspecies实际上是你定义的,而不是完整返回的数据。你可以定义一个回调函数,并完整调用它。代码可能像这样,因为有两个帖子,我无法调试它,你应该自己在你的环境中运行它,并检查它。

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

【讨论】:

以上是关于JSON Stringify 仅返回父级的主要内容,如果未能解决你的问题,请参考以下文章

JSON.parse和JSON.stringify的区别

当我 JSON.stringify(object) 我得到一个疯狂的字符串作为值

为啥 TypeError 上的 JSON.stringify 返回一个空对象 [重复]

JSON.stringify(2) == "2" 可能返回 false 是不是正确?

JSON.stringify 返回“[object Object]”而不是对象的内容

为啥 JSON.stringify 为似乎具有属性的对象返回空对象表示法“”?