Angular的http.get没有导入我的json文件 - 它给出了一个解析错误

时间:2014-11-13 15:35:17

标签: json angularjs http

我有一些看起来像这样的JSON:

[
     {
         _id: ObjectId("544809736654daf1ea897ca"),
         project: "demo",
         tools: ['ajax', 'javascript', 'html'],
     },
     {
         _id: ObjectId("322148965654daf1ea81ca"),
         project: "trial",
         tools: ['haskell'],
     }
]

我已将其保存在名为items的文件中。

我尝试使用以下代码将其导入我的Angular项目:

app.service("getItemsService", 
    function($http, $q){
        return {
            getItems: function getItems(){
                return $http.get('data/_items').success(function(data){
                    return data;
                }); 
            }
        }
    }
);

但是当我这样做时,我得到一个错误说:

SyntaxError: Unexpected token _
    at Object.parse (native)

我已经尝试了一切我能想到的解决方法 - 即我已将文件命名为items.json,我将_id更改为id,我&#39 ;尝试将{'Content-Type': 'application/json'}添加到get()函数作为参数来指示其JSON。 没有什么工作!有什么提示吗?

2 个答案:

答案 0 :(得分:3)

你的角度服务似乎很好。这是你的" JSON"未格式化为常规JSON字符串的内容文件:

  1. 属性为双引号字符串
  2. 值为双引号字符串或对象{}或数组[]
  3. 函数无法在json字符串中使用(您的ObjectId()函数)
  4. 数组中的最后一个元素不能以逗号结尾作为前一个元素
  5. 请改为尝试:

    [
         {
             "_id": "544809736654daf1ea897ca",
             "project": "demo",
             "tools": ["ajax", "javascript", "html"]
         },
         {
             "_id": "322148965654daf1ea81ca",
             "project": "trial",
             "tools": ["haskell"]
         }
    ]
    

答案 1 :(得分:1)

总是在像http://jsonlint.com/这样的问题中尝试使用JSON 它会告诉你

Parse error on line 2:
[    {        _id: ObjectId("54480
--------------^
Expecting 'STRING', '}'

这有点不那么神秘:它告诉你_id不是String =>你错过了"

之后会告诉你:

Parse error on line 3:
...   {        "_id": ObjectId("5448097366
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

ObjectId对JSON无效,您必须找到其他内容,例如只有id或者字符串中的所有内容:

[
{
    "_id": "544809736654daf1ea897ca",
    "project": "demo",
    "tools": [
        'ajax',
        'javascript',
        'html'
    ],

},
{
    "_id": "322148965654daf1ea81ca",
    "project": "trial",
    "tools": [
        'haskell'
    ],

}
]

但是,嘿,它没有完成:

Parse error on line 5:
...ols": [            'ajax',            
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', ']'
是的,'无效,一些解析器实际上单引号失败。

[
{
    "_id": "544809736654daf1ea897ca",
    "project": "demo",
    "tools": [
        "ajax",
        "javascript",
        "html"
    ],

},
{
    "_id": "322148965654daf1ea81ca",
    "project": "trial",
    "tools": [
        "haskell"
    ],

}
]

仍然没有:

Parse error on line 9:
...    ],            },    {        "_i
---------------------^
Expecting 'STRING'

似乎第9行周围存在问题,如果你仔细观察,你会看到一个没有任何背后的东西,让我们删除无用的,

[
{
    "_id": "544809736654daf1ea897ca",
    "project": "demo",
    "tools": [
        "ajax",
        "javascript",
        "html"
    ]
},
{
    "_id": "322148965654daf1ea81ca",
    "project": "trial",
    "tools": [
        "haskell"
    ]
}
]

就在这里!

enter image description here