簡體   English   中英

如何使用data ['file.file']訪問JSON?

[英]How can I access JSON using data['file.file']?

我可以使用var x = data.file.file查詢我的數據; 但是,我將file.file作為字符串,data ['file.file']失敗。 有沒有辦法做到這一點,還是我需要拆分字符串並遞歸走路?

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]]

如果不使用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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM