2015-01-16 59 views
-1

我是jsond3的新手,它可能是一個菜鳥的錯誤。 我想將json數據存儲在變量中,但它給出了意想不到的令牌u錯誤。將JSON數據存儲在變量中時出錯

這裏是我的代碼中,我分析和存儲數據 -

var links = []; 
var nodes = []; 
var data; 

d3.json("sample1.json", function(error, data) { 

    nodes = JSON.parse(data).nodes; 
    links = JSON.parse(data).links; 
}); 

JSON文件是這樣的 - 事先

{ 
"nodes":[ 
      {""name"":""17925"",""group"":6}, 
      {""name"":""20209"",""group"":215}] 
    "links"[ 
      {""source"":0,""target"":98,""value"":1}, 
      {""source"":0,""target"":108,""value"":2}] 
} 

感謝

+0

如果JSON是真的你看這裏,檢查產生它的腳本的方式,雙引號是真的錯了 – MightyPork

+0

更正的生成JSON的腳本。現在JSON很好。 現在我收到意外的令牌o錯誤。 –

+0

@SoniShashank:那是因爲JSON被解析了兩次。第二次,它會將對象轉換爲字符串'「[object Object]」,並嘗試將其解析爲JSON。 – Guffa

回答

0

d3.json method已經解析JSON爲您提供:

「的函數調用時需要兩個參數:錯誤,如果有的話, 解析JSON「。

所以,你不必再對其進行解析:

var links, nodes; 

d3.json("sample1.json", function(error, data) { 
    nodes = data.nodes; 
    links = data.links; 
}); 

由於roryok所指出的,JSON具有雙重qoutation痕跡。此外,它缺少周圍的屬性的對象說明符,它應該是:

{ 
    "nodes":[{"name":"17925","group":6},{"name":"20209","group":215}] 
    "links"[{"source":0,"target":98,"value":1},{"source":0,"target":108,"value":2}] 
} 

邊注:該方法是異步的,因此回調函數會被後來稱爲,當數據到達。您已在呼叫之外聲明變量,但呼叫後不會立即包含數據。

1

看起來你是雙引號節點和鏈接中的值。試試這個代替

"nodes":[{"name":"17925","group":6},{"name":"20209","group":215}] 
"links"[{"source":0,"target":98,"value":1},{"source":0,"target":108,"value":2}] 
+0

更正了生成JSON的腳本。現在JSON很好。現在我收到意外的令牌o錯誤。 –

+0

我想你也許會碰到o而不是0的地方? – roryok

-1

字符串值中的雙引號應該被轉義;據the specs"JSONEscapeCharacter

JSONEscapeCharacter ::
"/\ b f n r t

之一此外,您似乎缺少links屬性鍵後冒號(:)。

這將通過解析:

{ 
    "nodes": [ 
     { 
      "\"name\"": "\"17925\"", 
      "\"group\"": 6 
     }, 
     { 
      "\"name\"": "\"20209\"", 
      "\"group\"": 215 
     } 
    ],  
    "links": [ 
     { 
      "\"source\"": 0, 
      "\"target\"": 98, 
      "\"value\"": 1 
     }, 
     { 
      "\"source\"": 0, 
      "\"target\"": 108, 
      "\"value\"": 2 
     } 
    ] 
} 
0

您的JSON文件無效,這就是爲什麼JSON.parse不起作用。

一個有效的JSON文件就是這個(在這種情況下,1和2是ID)。

{ 
    "nodes":{ 
     "1":{ 
     "name":"17925", 
     "group":6 
     }, 
     "2":{ 
     "name":"20209", 
     "group":215 
     } 
    } 
}