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

问题描述 投票:0回答:7

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

{
  "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数组。

谢谢Arul

javascript json
7个回答
0
投票

我是按照以下方式做的,它正在发挥作用。我无法解析完整的对象。像单独获取身体对象。

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

然后以下列方式使用它。

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

1
投票

试试这样:

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

1
投票

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

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

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

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

0
投票

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

0
投票

这是因为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>
you can use simple for loop or $.each loop to iterate through the array
© www.soinside.com 2019 - 2024. All rights reserved.