2017-03-01 25 views
0

我的影片格式像下面這樣的JSON對象:清理一個JSON對象,它是完全的對象與1個屬性

{ 
    "ATTR1": { 
     "0":"Value1" 
    }, 
    "ATTR2": { 
     "0":"Value2" 
    } //and so on 
} 

,而此格式適用於幾十個屬性。我正在尋找一種方式來有JSON更喜歡:

{ 
    "ATTR1": "Value1", 
    "ATTR2": "Value2" //and so on 
} 

有沒有一種簡單的方法在Javascript才能做到這一點?我試過類似的東西:

for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     attr = attr[0]; 
    } 
} 

但是這一直沒有奏效。有任何想法嗎?

+0

是架構預測的?似乎有點可怕的事情任意做。 – Brad

回答

0

如果你想變異原來的obj,你可以這樣做:

for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     obj[attr] = obj[attr][0]; 
    } 
} 
+0

謝謝!我最終使用這個解決方案,因爲它改變了原始對象,並且與我已有的最接近。 – agoedken

0

你就近!

嘗試這樣:

var obj = { 
    "ATTR1": { 
     "0":"Value1" 
    }, 
    "ATTR2": { 
     "0":"Value2" 
    } //and so on 
}; 
var obj2 = {}; 
for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     obj2[attr] = obj[attr][0]; 
    } 
} 


alert(JSON.stringify(obj2)); 

小提琴:https://jsfiddle.net/coLxfeum/

2

使用上對象的關鍵減少爲:

let foo = { 
 
    "ATTR1": { 
 
     "0":"Value1" 
 
    }, 
 
    "ATTR2": { 
 
     "0":"Value2" 
 
    } //and so on 
 
}; 
 

 
let res = Object.keys(foo).reduce((a,b) => { 
 
\t a[b] = foo[b]['0']; 
 
    return a; 
 
}, {}); 
 

 
console.log(res)

+0

我只是做'['0']',但基本上我會做。 – epascarello

+0

@epascarello,謝謝,不是一個壞主意:) – baao

0

遍歷JavaScript對象是使用Object.keys()比較容易,海事組織。它在主流瀏覽器中得到了支持......無論如何,你想遍歷頂級對象,抓住它的所有「smallObject」值並將它們弄平。您可以根據需要儘可能嚴格地執行檢查(堅持使用「0」鍵等),但從根本上來說,要摺疊的值是包含字符串值的單值對象似乎很重要?無論如何 - 這裏是你如何能做到這一點:

var v1 = { 
    "ATTR1": { 
     "0": "Value1" 
    }, 
    "ATTR2": { 
     "0": "Value2" 
    } 
} 

function flatten(obj) { 
    Object.keys(obj).forEach(function(attr) { 
     var smallObj = obj[attr]; 
     var keys = Object.keys(smallObj); 
     if(keys.length === 1 && typeof smallObj[keys[0]] === 'string') { // && keys[0] === "0" ? 
      obj[attr] = smallObj[keys[0]]; 
     } // else throw Error(...) ? 
    }) 
    return obj; 
} 

console.log(flatten(v1)); 

> { ATTR1: 'Value1', ATTR2: 'Value2' } 
0

試試這個:

var jsonObj = { 
 
    "ATTR1": { 
 
     "0":"Value1" 
 
    }, 
 
    "ATTR2": { 
 
     "0":"Value2" 
 
    } 
 
}; 
 

 
var newJson = {}; 
 
for(var i = 0;i<Object.keys(jsonObj).length;i++) { 
 
    newJson[Object.keys(jsonObj)[i]] = jsonObj[Object.keys(jsonObj)[i]]["0"]; 
 
} 
 

 
console.log(newJson);

相關問題