Node.js解析在收到JSON时返回undefined

时间:2016-12-09 09:29:54

标签: javascript json node.js

我正在尝试解析我的node.js服务器上传入的JSON对象,但是它一直说它未定义?这是我的代码:

app.get("/adddates", function (req, res) {
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log("does this get called?"); //Response 1 here is correct
    console.log(query); //Response here 2*
    console.log(query['name']); // Response 3 here is undefined?
if(query["Name"]!==undefined) {
    var tx = { Name : query["Name"], 
        Description: query["Description"],
        Date: query["Date"],
                    People: query["people"],
                    Tag: query["Tag"]

    };
            console.log(tx);
    todos.push(tx);
    console.log("Added " + tx.message);
    res.end("Todo added successfully");
}
else {
    res.end("Error: missing message parameter");
}
});

2* = { '[{"Name":"testetst","Description":"Blasts","Date":"2016-12-08","People":["Sjaak"],"Tag":"': '' }

所以我的问题是,为什么响应3未定义以及如何解决它呢?

为什么Tag值为空?输入是十六进制颜色?它只是一个JSON解析我做错了吗?

非常感谢提前

1 个答案:

答案 0 :(得分:0)

如果查看url.parse文档,您会看到:

NSTextView

所以json中的┌─────────────────────────────────────────────────────────────────────────────┐ │ href │ ├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤ │ protocol ││ auth │ host │ path │ hash │ │ ││ ├──────────┬──────┼──────────┬────────────────┤ │ │ ││ │ hostname │ port │ pathname │ search │ │ │ ││ │ │ │ ├─┬──────────────┤ │ │ ││ │ │ │ │ │ query │ │ " http: // user:pass @ host.com : 8080 /p/a/t/h ? query=string #hash " │ ││ │ │ │ │ │ │ │ └──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘ (all spaces in the "" line should be ignored -- they are purely for formatting) 将在发送后成为哈希。要解决这个问题,您发送的数据应该是url编码的。这可以通过encodeURIComponent(URI)完成。

tag

修改 如果您查看query部分,您会看到它会解析$.get( "localhost:3000/adddates", encodeURIComponent(dateobj) ); 之类的数据。所以将查询部分添加到url字符串:

query=string

然后你应该能够检索像

这样的数据
$.get( "localhost:3000/adddates", "data=" + encodeURIComponent(dateobj) );

原始回答

假设json是

var json = query["data"];
var data = JSON.parse(json);
var name = data[0]["Name"]

有不同的sites,您可以在其中验证您的json是否正确。

然后查询是由[{"Name":"testetst","Description":"Blasts","Date":"2016-12-‌​08","People":["Sjaak‌​"],"Tag":""}] [指示的对象数组。要访问对象本身,您首先需要从数组中获取它们,然后您才能访问这些属性。

]