我正在使用一个向我发送XML的应用程序,因此我可以处理其中的数据。但是现在应用程序不仅会发送XML,还会发送JSON,具体取决于其他变量。
有什么方法可以验证发送的内容是否是JSON?相当于typeof
或instanceof
的东西会告诉我字符串是JSON吗?
编辑:我在这个使用非常非常差的编程框架构建的应用程序中进行维护。现在我的“数据”是一个函数的返回,我无法在没有重构框架的好部分的情况下获得Content-Type - 这需要几个月的时间 - 而且我现在没有这个时间。
现在:
ajax.request('POST',function(data){
xml = loadXML(data); // It's always a XML, so I simply load it.
...
..
})
我需要什么:
ajax.request('POST',function(data){
if(valueCanBeJSON(data)){ // It's not always a XML. How can I do this verification?
json = eval('('+data+')');
}else{
xml = loadXML(data);
...
..
}
})
答案 0 :(得分:1)
正如@Gumbo评论的那样,您可以查看Content-Type
HTTP响应标头字段。或者,您可以尝试解析它 - though don't use eval()
。使用JSON.parse()
。如果你正在使用jQuery,$.parseJSON()
或$.ajax()
(不指定data-type
)也会有效。
ajax.request('POST', function(data) {
var isJSON;
try {
data = JSON.parse(data);
isJSON = true;
}
catch (e) {
isJSON = false;
}
if (isJSON) {
// data is already parsed, so just use it
}
else {
// try treating it as XML
}
})
答案 1 :(得分:0)
如果服务器工作正常,它应该包含一个Content-type
标题,告诉您响应正文的格式。此外,如果它能够以两种不同的格式发送响应,那么它应该尝试遵守请求中的Accept
标头,并发送客户端指定的格式。
我建议你看一下JQuery - 它有facilities to handle this sort of thing.