2017-10-17 34 views
1

我將JSON轉換爲數組並返回到單獨的JSON對象(它與React和子對象相關)。下面的數組工作正常,數組元素變成了變量。但是當我嘗試從他們那裏製作一個obj時,關鍵不起作用,它只是保持「myKey」 - 爲什麼?將數組元素轉換爲對象的正確方法是什麼?製作對象時,數組鍵沒有插入

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
var methodOverride = require('method-override'); 
var fetch = require('isomorphic-fetch'); 
app.use(bodyParser.json()); 
app.use(methodOverride()); 


var promise = new Promise(function(resolve, reject) { 
fetch('https://jsonplaceholder.typicode.com/posts/1').then(
function(response){ 
return response.json(); 
    } 
).then(function(jsonData){ 

    result = [] 

    for(var i in jsonData) { 
     result.push([i, jsonData [i]]); 
    } 

    var myKey = result[0][0]; 
    var myValue = result[0][1]; 
    var myJSON = {myKey : myValue} 

    console.log(myJSON); 


    }); 

}); 
+0

'VAR myJSON一個簡單的方法= { [myKey]:myValue};' – Pointy

+0

那句話從來沒有發生過。剛剛錯過了。我試圖使用更多的{},但在這種情況下不起作用。好的,謝謝你。 – ColdSharper

+0

請注意,它不適用於舊版瀏覽器或舊手機等舊版JavaScript環境。在這些環境中,你必須用單獨的賦值語句來完成。 – Pointy

回答

2

因爲myKey被解釋爲一個值,而不是一個變量。你需要使用動態密鑰語法,這就是:

{ [myKey] : myValue } 

完整代碼:

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
var methodOverride = require('method-override'); 
var fetch = require('isomorphic-fetch'); 
app.use(bodyParser.json()); 
app.use(methodOverride()); 


var promise = new Promise(function(resolve, reject) { 
fetch('https://jsonplaceholder.typicode.com/posts/1').then(
function(response){ 
return response.json(); 
    } 
).then(function(jsonData){ 

    result = [] 

    for(var i in jsonData) { 
     result.push([i, jsonData [i]]); 
    } 

    var myKey = result[0][0]; 
    var myValue = result[0][1]; 
    var myJSON = {[myKey] : myValue} 

    console.log(myJSON); 


    }); 

}); 
1

使用帶方括號的鍵。

var myJSON = {[myKey] : myValue} 
0

有你可以得到這個工作

var myJSON = {}; 
myJson.myKey = myValue; 
myJson.myKey2 = myJsonValue2; 
.. 
+1

我相信你會希望'myJson [myKey]'這個版本 –