Javascript 将响应对象解析为对象数组

标签 javascript arrays paypal-nvp

以下是 Paypal 的 NVP API 的响应。我不熟悉使用像这样的键/值的单个对象的响应。通常,我希望搜索以数组的形式返回,其中包含对象。

有没有办法将其转换为对象数组?

{
L_TIMESTAMP0: "2018-05-08T19:23:17Z",
L_TIMESTAMP1: "2018-05-08T18:50:01Z",
L_TIMESTAMP2: "2018-05-08T18:45:30Z",
L_TIMEZONE0: "GMT",
L_TIMEZONE1: "GMT",
L_TIMEZONE2: "GMT",
L_TYPE0: "Payment",
L_TYPE1: "Payment",
L_TYPE2: "Payment",
L_NAME0: "Person One",
L_NAME1: "Person Two",
L_NAME2: "Person Three",
L_TRANSACTIONID0: "*********",
L_TRANSACTIONID1: "*********",
L_TRANSACTIONID2: "*********",
L_STATUS0: "Completed",
L_STATUS1: "Completed",
L_STATUS2: "Completed",
L_AMT0: "10.00",
L_AMT1: "100.00",
L_AMT2: "1000.00",
L_CURRENCYCODE0: "USD",
L_CURRENCYCODE1: "USD",
L_CURRENCYCODE2: "USD",
L_FEEAMT0: "-0.29",
L_FEEAMT1: "-2.93",
L_FEEAMT2: "-29.30",
L_NETAMT0: "9.71",
L_NETAMT1: "97.70",
L_NETAMT2: "970.70",
TIMESTAMP: "2018-05-08T19:47:10Z", // not for array
CORRELATIONID: "*******", // not for array
ACK: "Success", // not for array
VERSION: "204", // not for array
BUILD: "39949200" // not for array
}

我想将其解析为一个对象数组:

const recentOrders = [{
    timestamp: L_TIMESTAMP0,
    timezone: L_TIMEZONE0,
    type: L_TYPE,
    .....
},
{ timestamp: L_TIMESTAMP1, .... },
{ timestamp: L_TIMESTAMP2, .... },
// .... and so forth
]

最佳答案

这样的事情应该有效:

var data = {
L_TIMESTAMP0: "2018-05-08T19:23:17Z",
L_TIMESTAMP1: "2018-05-08T18:50:01Z",
L_TIMESTAMP2: "2018-05-08T18:45:30Z",
L_TIMEZONE0: "GMT",
L_TIMEZONE1: "GMT",
L_TIMEZONE2: "GMT",
L_TYPE0: "Payment",
L_TYPE1: "Payment",
L_TYPE2: "Payment",
L_NAME0: "Person One",
L_NAME1: "Person Two",
L_NAME2: "Person Three",
L_TRANSACTIONID0: "*********",
L_TRANSACTIONID1: "*********",
L_TRANSACTIONID2: "*********",
L_STATUS0: "Completed",
L_STATUS1: "Completed",
L_STATUS2: "Completed",
L_AMT0: "10.00",
L_AMT1: "100.00",
L_AMT2: "1000.00",
L_CURRENCYCODE0: "USD",
L_CURRENCYCODE1: "USD",
L_CURRENCYCODE2: "USD",
L_FEEAMT0: "-0.29",
L_FEEAMT1: "-2.93",
L_FEEAMT2: "-29.30",
L_NETAMT0: "9.71",
L_NETAMT1: "97.70",
L_NETAMT2: "970.70",
TIMESTAMP: "2018-05-08T19:47:10Z", // not for array
CORRELATIONID: "*******", // not for array
ACK: "Success", // not for array
VERSION: "204", // not for array
BUILD: "39949200" // not for array
};

const recentOrders = [];

var keys = Object.keys(data).filter(r => r.startsWith('L_'));

keys.forEach(k => {
    var index = parseInt(k.replace(/\D/g,''));
    var newKey = k.substring(2).replace(/[0-9]/g, '').toLowerCase();
    if (recentOrders[index] === undefined) {
        recentOrders[index] = {};
    }
    recentOrders[index][newKey] = data[k];
});

console.log(recentOrders);

关于Javascript 将响应对象解析为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241421/

相关文章:

javascript - 我不明白 localStorage 方法

Handlebar 中的 Javascript 函数调用

Python使用数组轴来选择切片

objective-c - 如何将 Core Data 数据放入数组数组中?与 Dave DeLong 的 CHCSVWriter 一起使用

php - PayPal 的 CallPaymentDetails 函数

Paypal NVP 我可以传递多个自定义字段吗

paypal - Paypal 的DoVoid方法中的权限被拒绝

javascript - 如何在 VueJS 中创建启动屏幕?

javascript - 我可以检测网页中是否存在扩展程序吗?

c++ - 错误 : expected primary-expression before ']' token