我从服务器收到以下响应,如下所示
{
"statusCode": 200,
"body": "{\"Errors\":\"\",\"Message\":\"\",\"Output\":\"\",\"TokenID\":\"F106457749C\",\"OrgID\":0,\"OutputObject\":{\"Details\":{\"CatalogDetail\":[{\"CatalogID\":74,\"CategoryID\":22,\"ShortCatalogName\":\"Email Forwarding\",\"CatalogName\":\"Email Forwarding\",\"Description\":\"Use this catalog for email forwarding \",\"IsVendor\":false,\"IsPackage\":false,\"AncestorParent_CategoryID\":58,\"IsEntitled\":0,\"CategoryName\":\"Email\",\"ServiceCatalogBGColor\":\"\"}],\"BaseUrl\":\"https://serviceimg-attachments\"}}}",
"headers": {
"cache-control": "private",
"content-type": "application/octet-stream",
"server": "Microsoft-IIS/8.5",
"set-cookie": [
"ASP.NET_SessionId=m0jbtyi12mzefkkyh3xd4i0m; path=/; HttpOnly",
".ASPXAUTH=41C6BC3E87DBF106457749C; path=/"
],
"x-aspnet-version": "4.0.30319",
"x-powered-by": "ASP.NET",
"date": "Mon, 15 Oct 2018 17:51:09 GMT",
"connection": "close",
"content-length": "779"
}
}
我想解析正文reponse.body这是一个字符串。进行解析的原因是获取数组response.body.OutputObject.Details.CatalogDetail
。但是当我这样做时,我得到Details as undefined
。谁能帮助我获得CatalogDetail数组。
谢谢 阿鲁尔
答案 0 :(得分:1)
尝试这样:
var myObject = JSON.parse("my json string");
答案 1 :(得分:1)
您必须先解析json,然后才能访问obj,JSON.parse将解析json字符串。
var json = '{"result":true, "count":42}';
obj = JSON.parse(json);
答案 2 :(得分:0)
这是因为主体的值是字符串格式,并且如果要以json格式访问它,则需要首先对其进行解析,请查看下面的代码片段以获取更多信息。
var response = {
"statusCode": 200,
"body": "{\"Errors\":\"\",\"Message\":\"\",\"Output\":\"\",\"TokenID\":\"F106457749C\",\"OrgID\":0,\"OutputObject\":{\"Details\":{\"CatalogDetail\":[{\"CatalogID\":74,\"CategoryID\":22,\"ShortCatalogName\":\"Email Forwarding\",\"CatalogName\":\"Email Forwarding\",\"Description\":\"Use this catalog for email forwarding \",\"IsVendor\":false,\"IsPackage\":false,\"AncestorParent_CategoryID\":58,\"IsEntitled\":0,\"CategoryName\":\"Email\",\"ServiceCatalogBGColor\":\"\"},{\"CatalogID\":75,\"CategoryID\":22,\"ShortCatalogName\":\"Email Forwarding2\",\"CatalogName\":\"Email Forwarding2\",\"Description\":\"Use this catalog for email forwarding \",\"IsVendor\":false,\"IsPackage\":false,\"AncestorParent_CategoryID\":58,\"IsEntitled\":0,\"CategoryName\":\"Email\",\"ServiceCatalogBGColor\":\"\"}],\"BaseUrl\":\"https://serviceimg-attachments\"}}}",
"headers": {
"cache-control": "private",
"content-type": "application/octet-stream",
"server": "Microsoft-IIS/8.5",
"set-cookie": [
"ASP.NET_SessionId=m0jbtyi12mzefkkyh3xd4i0m; path=/; HttpOnly",
".ASPXAUTH=41C6BC3E87DBF106457749C; path=/"
],
"x-aspnet-version": "4.0.30319",
"x-powered-by": "ASP.NET",
"date": "Mon, 15 Oct 2018 17:51:09 GMT",
"connection": "close",
"content-length": "779"
}
}
var body = JSON.parse(response.body)
var Catelogs = body.OutputObject.Details.CatalogDetail;
for(var i=0;i<Catelogs.length;i++){
console.log("CatalogID : " + Catelogs[i].CatalogID)
console.log("ShortCatalogName : " + Catelogs[i].ShortCatalogName);
}
$.each(Catelogs, function( index, value ) {
console.log( "CatalogID : " + value.CatalogID );
console.log( "ShortCatalogName : " + value.ShortCatalogName );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 3 :(得分:0)
我正在按照以下方式进行操作,并且正在工作。我无法解析完整的对象。分别获取身体对象。
var body = JSON.parse(res["body"])
然后按以下方式使用它。
JSON.parse(res["body"]).OutputObject.Details.CatalogDetail
答案 4 :(得分:0)
您需要将正文解析为json。可能无论您使用的是哪种框架都有类似response.json()
的方法,但是您可以只使用JSON.parse
。
response = {
"statusCode": 200,
"body": "{\"Errors\":\"\",\"Message\":\"\",\"Output\":\"\",\"TokenID\":\"F106457749C\",\"OrgID\":0,\"OutputObject\":{\"Details\":{\"CatalogDetail\":[{\"CatalogID\":74,\"CategoryID\":22,\"ShortCatalogName\":\"Email Forwarding\",\"CatalogName\":\"Email Forwarding\",\"Description\":\"Use this catalog for email forwarding \",\"IsVendor\":false,\"IsPackage\":false,\"AncestorParent_CategoryID\":58,\"IsEntitled\":0,\"CategoryName\":\"Email\",\"ServiceCatalogBGColor\":\"\"}],\"BaseUrl\":\"https://serviceimg-attachments\"}}}",
"headers": {
"cache-control": "private",
"content-type": "application/octet-stream",
"server": "Microsoft-IIS/8.5",
"set-cookie": [
"ASP.NET_SessionId=m0jbtyi12mzefkkyh3xd4i0m; path=/; HttpOnly",
".ASPXAUTH=41C6BC3E87DBF106457749C; path=/"
],
"x-aspnet-version": "4.0.30319",
"x-powered-by": "ASP.NET",
"date": "Mon, 15 Oct 2018 17:51:09 GMT",
"connection": "close",
"content-length": "779"
}
}
body = JSON.parse(response.body)
body.OutputObject.Details.CatalogDetail
答案 5 :(得分:0)
使用JSON.parse(data.body)
将字符串解析为JSON,然后您就可以执行任何操作了,
了解更多JSON.parse
下面是代码段
var data = {
"statusCode": 200,
"body": "{\"Errors\":\"\",\"Message\":\"\",\"Output\":\"\",\"TokenID\":\"F106457749C\",\"OrgID\":0,\"OutputObject\":{\"Details\":{\"CatalogDetail\":[{\"CatalogID\":74,\"CategoryID\":22,\"ShortCatalogName\":\"Email Forwarding\",\"CatalogName\":\"Email Forwarding\",\"Description\":\"Use this catalog for email forwarding \",\"IsVendor\":false,\"IsPackage\":false,\"AncestorParent_CategoryID\":58,\"IsEntitled\":0,\"CategoryName\":\"Email\",\"ServiceCatalogBGColor\":\"\"}],\"BaseUrl\":\"https://serviceimg-attachments\"}}}",
"headers": {
"cache-control": "private",
"content-type": "application/octet-stream",
"server": "Microsoft-IIS/8.5",
"set-cookie": [
"ASP.NET_SessionId=m0jbtyi12mzefkkyh3xd4i0m; path=/; HttpOnly",
".ASPXAUTH=41C6BC3E87DBF106457749C; path=/"
],
"x-aspnet-version": "4.0.30319",
"x-powered-by": "ASP.NET",
"date": "Mon, 15 Oct 2018 17:51:09 GMT",
"connection": "close",
"content-length": "779"
}
};
var output = JSON.parse(data.body);
console.log(output.OutputObject.Details.CatalogDetail);
答案 6 :(得分:0)
使用JSON.parse然后访问属性 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors以获得更多参考。
master