2017-12-02 28 views
1

javascriptが新しく、問題が発生しましたjsonファイルからすべてのnull値を削除する必要があります。しかし、私はそれを得ることができませんでした私はサイトで見つけた異なる方法を試してみましたが、私のために動作しません。 私が以下で見つけた方法の1つ。 jsonファイルの前にJSON.stringifyで取得し、nullを取り除くコードを使用すると、この "{\" name \ ":\" Ann \ "、\" children \ ": [null、null、null]}、null]} "、" null "、" null "、" null "jsonファイルからnull値を削除するjavascript

function Parent(name){ 
    this.name = name; 
    this.children=new Array(null,null,null); 
} 

Parent.prototype.getName = function(){ 
return this.name; 
}; 

Parent.prototype.setName = function(name) { 
this.name=name; 
}; 

Parent.prototype.getChildren = function(){ 
return this.children; 
}; 

Parent.prototype.setChildren = function(parent) { 
this.children=parent; 
}; 

var parent = create(aux,new Parent(""));// This method create tree parent 
var o = parent; 
j = JSON.stringify(o, (k, v) => Array.isArray(v) 
     && !(v = v.filter(e => e !== null && e !== void 0)).length ? void 0 : v, 2) 
    alert (j); 

JSONファイル:

{ 
    "name": "Ann", 
    "children": 
    [ 
    null, 
    { 
     "name": "Beta", 
     "children": 
     [ 
     null, 
     null, 
     null 
     ] 
    }, 
    null 
    ] 
} 

は、私が何を期待:

j = '{ "name": "Ann", "children": [ null, { "name": "Beta", "children": [ null, null, null ] }, null ] }' 
 

 
o = JSON.parse(j, (k, v) => Array.isArray(v) ? v.filter(e => e !== null) : v) 
 

 
console.log(o)
:値を変更する代用機能を受け入れる

{ 
    "name": "Ann", 
    "children": 
    [ 
    { 
     "name": "Beta" 
    } 
    ] 
} 
+0

を。代わりに配列のヌル要素をスプライスする必要があるようです。 – Andy

+0

元のオブジェクトを変更してもよろしいですか?私は、元の参照からプロパティを更新したり削除したりする代わりに、新しいフィルターされたオブジェクトを作成することを検討したいと思います。 –

+0

@MatiasCicero Relax、JSONファイルから来たので、解析後はすでにコピーです。 – blex

答えて

2

JSON.parse

o = { "name": "Ann", "children": [ null, { "name": "Beta", "children": [ null, null, null ] }, null ] } 
 

 
j = JSON.stringify(o, (k, v) => Array.isArray(v) ? v.filter(e => e !== null) : v, 2) 
 

 
console.log(j)

あまりにも空の配列を削除するには:私はあなたがオブジェクトのプロパティを削除したいとは思わないので

o = { "name": "Ann", "children": [ null, { "name": "Beta", "children": [ null, null, null ] }, null ] } 
 

 
j = JSON.stringify(o, (k, v) => Array.isArray(v) 
 
           && !(v = v.filter(e => e)).length ? void 0 : v, 2) 
 

 
console.log(j)

+0

あなたのソリューションは素晴らしいです私はJSONファイルの前にJSON.stringifyと空の配列も削除するコードを使って取得する前に言ったように問題があります。この "{\" name \ ":\" Ann \ "子\":[null、null、null]}、null]} "になります。私は間違って何をしていますか? – pete

+0

@peteおそらく、値は 'null'ではなく' undefined'またはmissingです。アップデートをお試しください。 – Slai

+0

同じことを続けることは非常に奇妙です。 jsonが燃やされて動作します。しかし、JSON.stringifyでそれを取得することはできません。 JavaScriptは私を悩ますだけです。 – pete

関連する問題