我需要从订单中提取productid的文本值,但不幸的是我无法遍历JSON。关于如何以最简单的方式遍历Node JS中的节点的任何想法吗?
"order": {
"PRD_SHIRT_048": {
"price": "40.99",
"productId": "PRD_SHIRT_048",
"quantity": "1"
},
"PRD_TOP_047": {
"price": "40.99",
"productId": "PRD_TOP_047",
"quantity": "1"
}
}
答案 0 :(得分:1)
首先,您需要确定要从中提取数据的位置。 如果来自文件,则需要使用npm软件包“ fs”导入文件。
示例代码:
const fs = require("fs");
const content = fs.readFileSync("content.json");
console.log("Output: \n" + content);
您可以使用axios从特定的URL获取json数据。例如:
axios.get('yoururl')
.then((response) => {
// handle success
console.log(response);
})
.catch((error) => {
// handle error
console.log(error);
});
然后,您已成功提取数据。 之后,您可以使用JSON.parse解析json内容,这将返回一个包含所有内容的对象。
例如您的代码:
const json = `{"order": {
"PRD_SHIRT_048": {
"price": "40.99",
"productId": "PRD_SHIRT_048",
"quantity": "1"
},
"PRD_TOP_047": {
"price": "40.99",
"productId": "PRD_TOP_047",
"quantity": "1"
}
}}`;
const obj = JSON.parse(json);
console.log(obj.order.PRD_SHIRT_048.productId);
如果需要,您可以遍历订单对象中的对象并从中获取产品ID。
答案 1 :(得分:0)
如果我正确理解您的问题,您是想提取 productIds 吗?
这是一个使用 vanilla javascript 的解决方案
const data = { order: { PRD_SHIRT_048: { price: '40.99', productId: 'PRD_SHIRT_048', quantity: '1' }, PRD_TOP_047: { price: '40.99', productId: 'PRD_TOP_047', quantity: '1' } } };
console.log(Object.keys(data.order));
// => [ 'PRD_SHIRT_048', 'PRD_TOP_047' ]
console.log(Object.values(data.order).map(({ productId }) => productId));
// => [ 'PRD_SHIRT_048', 'PRD_TOP_047' ]
.as-console-wrapper {max-height: 100% !important; top: 0}
或者如果您需要更灵活的解决方案(即 productId 的多个不同路径、嵌套的 productIds 等),您可以考虑使用库
// const objectScan = require('object-scan');
const data = { order: { PRD_SHIRT_048: { price: '40.99', productId: 'PRD_SHIRT_048', quantity: '1' }, PRD_TOP_047: { price: '40.99', productId: 'PRD_TOP_047', quantity: '1' } } };
console.log(objectScan(['order.*.productId'], { rtn: 'value' })(data));
// => [ 'PRD_TOP_047', 'PRD_SHIRT_048' ]
console.log(objectScan(['order.*'], { rtn: 'property' })(data));
// => [ 'PRD_TOP_047', 'PRD_SHIRT_048' ]
.as-console-wrapper {max-height: 100% !important; top: 0}
<script src="https://bundle.run/object-scan@13.8.0"></script>
免责声明:我是object-scan
的作者