這是我寫的,這將改變/縮短JSON對象上的所有按鍵的功能在一個JSON對象,縮短按鍵的名稱使用python/bash的
function replaceKeyWithNewKey(jsonObj, new_keys, old_keys){
console.log("test")
for(i=0;i<jsonObj.length;i++){
for(el in jsonObj){
//console.log(new_keys[el])
jsonObj[i][new_keys[el]]=jsonObj[i][old_keys[el]] //add new key
delete jsonObj[i][old_keys[el]] // delete old key
}
}
return jsonObj
}
我所尋找的是一個方法來做到這在終端使用bash或python或其他,但我想在終端做到這一點。所以我會在file.json上運行該腳本,結果將是file2.json與file2.json具有較短的鍵名。 我該怎麼做?
對於bash我想使用sed
,但我不認爲這會取代我不想取代的值。 我知道的python的小可能是要走的路。
這裏是一個控制檯打印:
>data[0]
Object {Rec_Open_Date: "2016-07-07", MSISDN: 123, IMEI: 223, Data_Volume_Bytes: "673", Device_Manufacturer: "Samsung Korea"…}
>old_keys=Object.keys(data[0])
["Rec_Open_Date", "MSISDN", "IMEI", "Data_Volume_Bytes", "Device_Manufacturer", "Device_Model", "Product_Description", "Data_Volume_MB"]
>new_keys=["r", "m", "i", "d", "f", "l", "s", "d2"]
["r", "m", "i", "d", "f", "l", "s", "d2"]
>function replaceKeyWithNewKey(jsonObj, new_keys, old_keys){
console.log("test")
for(i=0;i<jsonObj.length;i++){
for(el in jsonObj){
//console.log(new_keys[el])
jsonObj[i][new_keys[el]]=jsonObj[i][old_keys[el]] //add new key
delete jsonObj[i][old_keys[el]] // delete old key
}
}
return jsonObj
}
undefined
> replaceKeyWithNewKey(data, new_keys, old_keys)
VM129:2 test
[Objectd: "673"d2: "0.000641823"f: "Samsung Korea"i: 223l: "Samsung GT-I9505"m: 123r: "2016-07-07"s: "PREPAY PLUS - $1 - #33"__proto__: Object, Object, Object, Object, Object, Object, Object, Object, Object]
這裏是樣本數據來測試我的功能上:
var json = '[{"_id":"5078c3a803ff4197dc81fbfb","email":"[email protected]","image":"some_image_url","name":"Name 1"},{"_id":"5078c3a803ff4197dc81fbfc","email":"[email protected]","image":"some_image_url","name":"Name 2"}]';
既然你已經w ritten代碼在JavaScript中執行此操作,爲什麼不堅持? (爲什麼要切換語言?) – smarx
這與sed(標記爲)有什麼關係? –
@smarx,因爲我想要它在文件格式。而js我已經格式化了一部分,也許我只需要從文件中寫入文件並寫入文件部分,然後再練習如何在終端或其他方式中執行此操作。如果你能簡單地解釋,想知道如何做到這一點。 – HattrickNZ