2016-11-03 9 views
0

"条件付きで"キー値を送信したいと思います。条件付きでJSONキーをフェッチで送信

現在、基本的には、フィールドに値が含まれているかどうかにかかわらず、フィールドKEY_TESTを送信します。

値がない場合は、フィールドをまったく送信しません。

{"text":"blah","KEY_TEST":1} 

をががない場合:そこフェッチ、this.props.photo.info[0]値であるので、もしそれが送信する必要があります...つまり

{"text":"blah","KEY_TEST":""}{"text":"blah","KEY_TEST":1}

を送信しますthis.props.photo.info[0]の値を取得する必要があります。

{"text":"blah"} 
ここ

は私の完全なコードです:

editorUpdate: function(e) { 
    e.preventDefault(); 
    return fetch(URL { 
    method: 'PUT', 
    body: JSON.stringify({ 
    "info": [{ 
      "text": this.state.value.toString('html'), 
      "KEY_TEST": this.props.photo && this.props.photo.info && this.props.photo.info[0] && this.props.photo.info[0].pk || '', 
     }] 
     }) 
     }) 
     .then(function(res){ return res.json(); }) 
     .then(function(data){ alert(JSON.stringify(data)) }) 
    }, 
+0

のように試してみてくださいなぜあなたは身体に追加する前にチェックしませんか? –

+0

私にその例を教えてください。私はそれが 'JSON.stringify'の内部に存在する可能性があることを知らなかった – Ycon

+0

以下のコードを試してください –

答えて

1

この

editorUpdate: function(e) { 
    e.preventDefault(); 
    var keyTest = (this.props.photo && this.props.photo.info && this.props.photo.info[0]) ? {"KEY_TEST": this.props.photo.info[0].pk} : {}; 
    return fetch(URL { 
    method: 'PUT', 
    body: JSON.stringify({ info : [ Object.assign({ 
      "text": this.state.value.toString('html') 
     },keyTest)]}) 
     }) 
     .then(function(res){ return res.json(); }) 
     .then(function(data){ alert(JSON.stringify(data)) }) 
    }, 
+0

それはうまくいくように見えます。私はOPを更新しています。私のJSONフィールドは実際に入れ子になっています。私はそれを調整することに問題があります – Ycon

+0

あなたのために何が問題なのですか? –

+0

データ "text"は文字列 "info"内にネストされています。元の投稿を参照してください。このような '' info ':{{"text":1、 "KEY_TEST":1、}} 'などです。あなたの例を試しましたが、INFO内のjsonを入れ子にしようとすると 'toString( 'html')'の後にエラーが発生します – Ycon