【问题标题】:Error when storing JSON data in variable将 JSON 数据存储在变量中时出错
【发布时间】:2015-01-16 09:39:41
【问题描述】:

我是jsond3 的新手,可能是菜鸟的错误。 我正在尝试将 json 数据存储在变量中,但它给出了意外的令牌 u 错误。

这是我解析和存储数据的代码 -

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

提前致谢

【问题讨论】:

  • 如果JSON真的是你这里显示的方式,检查生成它的脚本,双引号真的错了
  • 更正了生成 JSON 的脚本。现在 JSON 很好。现在我收到了意外的 token o 错误。
  • @SoniShashank:那是因为 JSON 被解析了两次。第二次它将对象转换为字符串 "[object Object]" 并尝试将其解析为 JSON。

标签: javascript json d3.js


【解决方案1】:

看起来您是在对节点和链接中的值进行双引号。试试这个

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

【讨论】:

  • 更正了生成 JSON 的脚本。现在 JSON 很好。现在我收到了意外的 token o 错误。
  • 我猜你可能在某个地方打了 o 而不是 0?
【解决方案2】:

d3.json method 已经为您解析了 JSON:

" 使用两个参数调用回调:错误(如果有)和 解析后的 JSON。”

因此,您不必再次解析它:

var links, nodes;

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

正如 roryok 指出的那样,JSON 有双引号。此外,它缺少属性周围的对象说明符,它应该是:

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

旁注:该方法是异步的,所以稍后会在数据到达时调用回调函数。您已经在调用之外声明了变量,但它们不会在调用后立即包含数据。

【讨论】:

    【解决方案3】:

    您的 JSON 文件无效,这就是 JSON.parse 不起作用的原因。

    一个有效的 JSON 文件应该是这个(在这种情况下 1 和 2 是 ID)。

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

    【讨论】:

      【解决方案4】:

      字符串值中的双引号应该被转义;根据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
              }
          ]
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-26
        • 2015-02-23
        • 1970-01-01
        • 1970-01-01
        • 2018-08-13
        • 2021-10-17
        • 2021-04-02
        • 1970-01-01
        相关资源
        最近更新 更多