我可以使用var x = data.file.file查詢我的數據;然而,我有file.file作爲一個字符串和data ['file.file']失敗。有沒有辦法做到這一點,或者我需要分割字符串,並遞歸?如何使用data ['file.file']訪問JSON?
回答
不訴諸使用eval(你應該避免),你必須拆分字符串。這樣的事情應該很好地工作:
var data = {
file: {
file: 'YAY'
}
};
getProp(data, 'file.file'); // "YAY"
setProp(data, 'file.newprop.blop', 7); // false
setProp(data, 'file.newprop', {}); // true
setProp(data, 'file.newprop.blop', 7); // true
console.log(data); // {file: {file: "YAY", newprop: {blop: 7}}}
function getProp(obj, path){
var parts = path.split('.'), u, i;
for(i = 0; i < parts.length; i++){
obj = obj[parts[i]];
if(obj === u) return u;
}
return obj;
}
function setProp(obj, path, newValue){
var parts = path.split('.'), u, i;
for(i = 0; i < parts.length - 1; i++){
obj = obj[parts[i]];
if(obj === u) return false;
}
obj[parts[i]] = newValue;
return true;
}
謝謝(而不是我期待的答案)。 –
順便說一句,我認爲你的代碼是錯誤的。你和我永遠不會被分配。 –
@DavidThielen不,它是正確的,'i'在循環開始時被賦值,'u'被有目的地定義爲'undefined'。 – Paulpro
data['file.file']
指向名爲'file.file'的數據屬性,而data.file.file
指向數據屬性文件的屬性文件。
使用data['file']['file']
,而不是實現像data.file.file
更新相同的訪問:
當然,你將不得不分割你的字符串使用多陣列的訪問方法。在你的情況下,這可能是這樣的:
var path = 'file.file'
var pathElems = path.split('.')
// access field
data[pathElems[0]][pathElems[1]]
- 1. 訪問/data/data/com.whatsapp
- 2. 如何使用d3訪問JSON數據?
- 3. 如何使用jquery訪問這種Json?
- 4. 如何使用Handlebars.js訪問JSON對象?
- 5. File.file?()和File :: directory?()
- 6. Json Data Forloop問題
- 7. 如何訪問$ data的屬性?
- 8. 如何訪問android文件/data/anr/traces.txt和/ data/tombstones/tombstones
- 9. 如何訪問unity3d中的android/data/data/path的路徑
- 10. 使用JQuery訪問JSON
- 11. 使用jQuery訪問json值
- 12. 使用python訪問JSON api
- 13. 訪問JSON使用jQuery
- 14. 如何使用json訪問嵌套的json對象?
- 15. 如何訪問Json響應
- 16. 如何訪問此JSON值?
- 17. 如何訪問JSON數據?
- 18. 如何訪問JSON值?
- 19. 如何訪問json數據
- 20. 訪問JSON
- 21. 使用Google Data API訪問Google電子表格使用Google Data API失敗Mono
- 22. 如何使用$ .each()訪問JSON中的特定值使用$ .each()
- 23. 如何訪問JSON '(字符串,JSON)'
- 24. 訪問多JSON
- 25. 合併File.size? ,File.file?和MD5
- 26. 訪問JSON
- 27. JSON數據訪問
- 28. 訪問JQuery元素 - $ .data
- 29. 拒絕訪問www-data @ localhost
- 30. Json對象訪問
'數據[「文件」] [「文件」]' - 將有兩個步驟來完成與串那樣的,分裂的點。 – Orbling
是的,你需要分割字符串並遞歸地走。解析器已被寫入。 –