2012-12-12 26 views
3

鑑於這種對象:獲取對象的屬性值,其中的關鍵是一個空字符串

: http://www.w3.org/2005/Atom 
gd: http://schemas.google.com/g/2005 
openSearch: http://a9.com/-/spec/opensearch/1.1/ 
app: http://www.w3.org/2007/app; 
media: http://search.yahoo.com/mrss/ 

我如何獲得第一屬性的值?我懷疑這是一個簡單的過程,但我畫了一個空白。提前致謝。

的目標是建成這樣的:

服務器端(PHP):

$namespaces = $feedXML->getNamespaces(true); 
$arr = array(
'Status' => 'Success', 
'Message' => 'Feed fetched.', 
'Namespaces' => $namespaces, 
'Feed XML' => $feedXML 
); 
echo json_encode($arr); 

客戶端(JS):

var output = ''; 
    for (property in dataj["Namespaces"]) { 
     output += property + ': ' + dataj["Namespaces"][property] + '; '; 
    } 
    alert(output); 

我想能夠檢查命名空間來查看這是Atom還是RDF。

這聽起來像只是迭代每個屬性將是最好的方式。

+0

這段代碼實際上工作嗎?因爲我所得到的是[Uncaught SyntaxError:Unexpected token':'](http://jsfiddle.net/davidThomas/4kNhP/)。 –

+0

什麼是確切的代碼?你的對象是如何構建的? –

+0

這不是有效的JavaScript對象。我確信api會發送正確編碼的JSON對象(例如'{「xmlns」:「http://www.w3.org/2005/Atom」,「xmlns $ gd」:「http://schemas.google的.com /克/ 2005" }')。 –

回答

6

如果你正在試圖獲得其關鍵是一個空字符串屬性的值,那麼你可以做

var value = myObject['']; 

如果你試圖得到一個對象的「第一個屬性」,可以'因爲JavaScript對象中的屬性沒有排序。

+0

這是名稱空間XML名稱空間的JSON對象。你是說我應該將這個對象解碼回數組?這甚至會用空白鍵來工作嗎? – Drazisil

+0

這是正確的,但是您可以迭代對象的屬性以獲取值。 –

+0

不知道你可以通過這種方式引用空字符串鍵。謝謝。 – Drazisil

1

屬性不保證被命令。但是,您可以遍歷所有屬性,找到合適的人(如果你知道你在找什麼):

for(var prop in obj) { 
    if(obj.hasOwnProperty(prop)) 
     doSomethingWith(obj[prop]); 
} 

參考:Iterating over every property of an object in javascript using Prototype?

然後通過

var value = obj[key]; 
+0

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty這看起來不像是一個空白屬性。 – Drazisil

1

你拿到鑰匙可以試試這個代碼:

var test_bject = {'test': 1, 'test2': 2, 'test3': 3}, first_value; 

for (i in test) { 
    first_value = test_object[i]; 
    break; 
} 
+0

這將工作。我應該更好地表達我想要做的事情。 – Drazisil

相關問題