分析字符串以获取数组详细信息



我从服务器收到以下响应,如下所示

{
"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 reponse.body,这是一个字符串。解析的原因是获取数组response.body.OutputObject.Details.CatalogDetail。但是当我这样做时,我会Details as undefined.谁能帮我获取目录详细信息数组。

谢谢 阿鲁尔

尝试如下:

var myObject = JSON.parse("my json string");

在访问 obj 之前,你必须解析 json,JSON.parse 会解析 json 字符串。

var json = '{"result":true, "count":42}';
obj = JSON.parse(json);

我正在按照以下方式执行此操作,并且它正在工作。我无法解析完整的对象。分别获取正文对象。

var body = JSON.parse(res["body"])

然后按以下方式使用它。

JSON.parse(res["body"]).OutputObject.Details.CatalogDetail

您需要将正文解析为 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

使用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);

使用 JSON.parse 然后访问属性 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors 更多参考。

var obj = {
"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 formated = JSON.parse(obj.body);
var CatalogDetail = formated.OutputObject.Details.CatalogDetail[0];
console.log(CatalogDetail);

这是因为 body 的值是字符串格式的,如果你想以 JSON 格式访问它,你需要先解析它,请查看下面的代码 snipet 了解更多信息。

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>
您可以使用简单的 for 循环或 $.each 循环来循环访问数组

最新更新