2016-04-18 13 views
-1

私は戻っAPI呼び出しからこの配列を取得しています:これは正直Javascript配列

[ 
    Node { id: 123, properties: {color : 'red', shape : 'round'} }, 
    Node { id: 121, properties: {color : 'blue', shape : 'square'} }, 
    Node { id: 119, properties: {color : 'yellow', shape : 'rectangular'} } 
] 

は何ですか?オブジェクトの配列ではないのですか?それがあった場合:

myArray[0].properties.color 

しかし、私はここにあるため、これを行うことはできません。

[ 
    { id: 123, properties: {color : 'red', shape : 'round'} }, 
    { id: 121, properties: {color : 'blue', shape : 'square'} }, 
    { id: 119, properties: {color : 'yellow', shape : 'rectangular'} } 
] 

そして、私は配列の最初の項目の「色」-propertyにアクセスすることを望んでいた私は行くだろう配列のすべての項目の奇妙な "Node" - プレフィックスの

このことは何ですか?また、そのプロパティにアクセスするにはどうすればよいですか。

+2

どこから出力が得られますか? Chrome Javascriptのコンソールなどこれはおそらく、オブジェクトのタイプ(つまり、どのクラスであるか)を伝えているだけで、表示されているとおりにプロパティにアクセスできます。 – deceze

+1

最初のコードブロックはJSONではありません。 APIのようなものを得ているなら、JSON APIでなくてもかまいません。 – Siguza

+0

これはneo4jのREST -api(グラフデータベース)からのもので、そのタイプ(グラフノード)を記述している限り、あなたは正しいです。しかし、いいえ - 私はその物件にアクセスできません。 @deceze – swelet

答えて

1

私はわからないんだけど、このデータは、あなたがそれを提示するのと同じくらい簡単です場合、私は怠けていると、文字列からNodeを交換勧め:

var str = `[ 
    Node { id: 123, properties: {color : 'red', shape : 'round'} }, 
    Node { id: 121, properties: {color : 'blue', shape : 'square'} }, 
    Node { id: 119, properties: {color : 'yellow', shape : 'rectangular'} } 
]`; 
var withoutCrap = str.replace(/Node\s*\{/g, "{"); 

この出力:

[ 
    { id: 123, properties: {color : 'red', shape : 'round'} }, 
    { id: 121, properties: {color : 'blue', shape : 'square'} }, 
    { id: 119, properties: {color : 'yellow', shape : 'rectangular'} } 
] 

これはまだ有効です。有効なJSONではありません。 JSON仕様では、キーの引用先は{"like": "this"}です。あなたが汚いevalをgood'ol使用してJSオブジェクトにそれを回すことができるしかし:

var myObject = eval("("+withoutCrap+")"); 

これらの余分な括弧は、私が過去に経験したいくつかの問題を防ぎます。


この問題を解決する正しい方法は、しかしながら、APIフレームワーク(明確JSONではない)は、このプロトコルに関連をフェッチすることです。これには、データを正しく解釈するパーサーが含まれます。接続しているサイトのドキュメントを参照する必要があります。

+0

JSONレスポンスがきれいになるようにパーサーが存在することは間違いありませんでした。私を正しい方向に向けてくれてありがとう。 – swelet