javascript - 在nodejs中将Json对象转换为数组
问题描述
Photos:
- id: Photo1
Type: Color
Shade: Grey
- id: Photo2
Type: Color
Shade: Red
这里将上述 yaml 文件转换为 JSON 对象并尝试根据 id 查找照片:
const raw = fs.readFileSync("Photos.yaml", 'utf8');
const PhotoData= YAML.load(raw);
export const getSpecificPhoto = (req,res)=>{
const { id } = req.params;
let photoArray = []; //photoArray
let getPhoto = JSON.stringify(PhotoData); //Converting to JSON string
photoArray.push(getPhoto); //Pushing to arrayv so that search can be done
console.log(photoArray);
const foundPhoto = photoArray.find((photo) => photo.id == id);
console.log(foundPhoto );
}
在 上获得以下结果:
console.log(photoArray) => {"Photos":[{"id":"Photo1","Type":"Color","Shade":"Grey"},{"id":"Photo2","Type":"Color","Shade":"Red"}]}
console.log(foundPhoto) => undefined
问题:我怀疑获取“照片”:console.log(photoArray) 的结果导致我基于 id 搜索照片失败。如何删除这个?我相信如果这被删除搜索和返回照片将起作用
解决方案
您的数据是 insodePhotos
对象,然后您推入一个空数组。所以当你从数组中查找时,你需要从正确的位置获取它。
正确代码:
(function test(id) {
let PhotoData = "{\"Photos\":[{\"id\":\"Photo1\", \"Type\": \"Color\", \"Shade\": \"Grey\"}, {\"id\": \"Photo2\", \"Type\": \"Color\", \"Shade\": \"Red\"}]}"
let photoArray = []; //photoArray
let getPhoto = JSON.parse(PhotoData); //Converting to JSON object
console.log(getPhoto);
photoArray.push(getPhoto); //Pushing to arrayv so that search can be done
console.log(photoArray);
const foundPhoto = photoArray[0].Photos.find((photo) => photo.id == id);
console.log(foundPhoto );
})("Photo1");
结果:
{id: "Photo1", Type: "Color", Shade: "Grey"}
推荐阅读
- r - 在带有 Docker 的 Google App Engine Flex 中使用管道工部署 R 时出错
- python - numpy datetime64 来自日、月、年系列
- c - 在 C 中同时使用 strlen 和断言
- java - Tomcat 是否支持 TLS v1.3?
- python-sphinx - Sphinx 将撇号后跟“ref”交叉引用变成双引号
- floating-point - 在仅支持 32 位浮点的平台上,如何将 IEEE754 64 位双精度数除以 1000?
- java - Querydsl:如何向下转换连接实体?
- java - Java Stream API:如何使用方法参考?
- flutter - 无法更改飞镖中的图像大小
- ethereum - 使用 Web3j 发送 ERC-20 令牌