【问题标题】:Parse JSON Object within Object解析对象内的 JSON 对象
【发布时间】:2019-08-09 21:22:11
【问题描述】:

我正在使用 nodejs 脚本来解析其中一个 json 字符串,但无法弄清楚如何解析来自对象内的 onject 的数据。

这是 JSON 对象:

{
    "Item":{
        "job_change_request":"task0020764",
        "id":"a156fc4e-e8d4-424f-a792-0c8cf8e3ca46",
        "job_data":{
            "location":"sdqa03",
            "id":"8f6087cb-b33d-41c4-9a71-e865fd444a1d",
            "customer_id":"cust01291",
            "change_request":"task0020764"},

"job_requested_time":"2019-08-09T20:54:20.237536",
            "job_type":"create_subnet",
            "job_status":"completed"},
            "ResponseMetadata":{

"RequestId":"3TVF1M3UH7EIHUFJ0KA97F551NVV4KQNSO5AEMVJF66Q9ASUAAJG",
                "HTTPStatusCode":200,
                "HTTPHeaders":{
                    "server":"Server",
                    "date":"Fri, 09 Aug 2019 20:57:23 GMT",
                    "content-type":"application/x-amz-json-1.0",
                    "content-length":"385",
                    "connection":"keep-alive",
                    "x-amzn-requestid":"3TVF1M3UH7EIHUFJ0KA97F551NVV4KQNSO5AEMVJF66Q9ASUAAJG",
                    "x-amz-crc32":"1811639896"},
                    "RetryAttempts":0
            }
}

我需要访问job_data中的job_type、job_status和id。

任何人都可以在这里帮助我。

【问题讨论】:

  • 您的“json 对象”内部没有另一个“json 对象”。

标签: javascript node.js json object


【解决方案1】:

你的意思是这样吗?您只想读取这三个字段的值?

使用Destructuring

const data = {  statuscode: 200,  statustext: "OK",  responseBody: {    Item: {      job_change_request: "task0020764",      id: "a156fc4e-e8d4-424f-a792-0c8cf8e3ca46",      job_data: {        location: "sdqa03",        id: "8f6087cb-b33d-41c4-9a71-e865fd444a1d",        customer_id: "cust01291",        change_request: "task0020764"      },      job_requested_time: "2019-08-09T20:54:20.237536",      job_type: "create_subnet",      job_status: "completed"    },    ResponseMetadata: {      RequestId: "3TVF1M3UH7EIHUFJ0KA97F551NVV4KQNSO5AEMVJF66Q9ASUAAJG",      HTTPStatusCode: 200,      HTTPHeaders: {        server: "Server",        date: "Fri, 09 Aug 2019 20:57:23 GMT",        "content-type": "application/x-amz-json-1.0",        "content-length": "385",        connection: "keep-alive",        "x-amzn-requestid":          "3TVF1M3UH7EIHUFJ0KA97F551NVV4KQNSO5AEMVJF66Q9ASUAAJG",        "x-amz-crc32": "1811639896"      },      RetryAttempts: 0    }  }};

const {
  job_type,
  job_status,
  job_data: { id }
} = data.responseBody.Item;
console.log(job_type, job_status, id);

【讨论】:

    【解决方案2】:

    这不是 JSON 对象。它是一个 JavaScript 对象。像平常一样访问属性:

    const { id, job_type, job_status } = obj.Item.job_data;
    

    【讨论】:

      【解决方案3】:

      如果你有 json 文件,你可以使用JSON.parse(),而不是将它作为一个对象使用。

      let jsonData = '{"Item":{"job_change_request":"task0020764","id":"a156fc4e-e8d4-424f-a792-0c8cf8e3ca46","job_data":{"location":"sdqa03","id":"8f6087cb-b33d-41c4-9a71-e865fd444a1d","customer_id":"cust01291","change_request":"task0020764"},"job_requested_time":"2019-08-09T20:54:20.237536","job_type":"create_subnet","job_status":"completed"},"ResponseMetadata":{"RequestId":"3TVF1M3UH7EIHUFJ0KA97F551NVV4KQNSO5AEMVJF66Q9ASUAAJG","HTTPStatusCode":200,"HTTPHeaders":{"server":"Server","date":"Fri, 09 Aug 2019 20:57:23 GMT","content-type":"application/x-amz-json-1.0","content-length":"385","connection":"keep-alive","x-amzn-requestid":"3TVF1M3UH7EIHUFJ0KA97F551NVV4KQNSO5AEMVJF66Q9ASUAAJG","x-amz-crc32":"1811639896"},"RetryAttempts":0}}';
      
      let obj = JSON.parse(jsonData);
      console.log(obj.Item.job_type);
      console.log(obj.Item.job_status);
      console.log(obj.Item.job_data);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-19
        • 2021-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多