当前位置: 首页 > 知识库问答 >
问题:

将Json对象转换为nodejs中的数组

赵河
2023-03-14
 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的照片搜索失败。如何去除这个?我相信如果这个被移除,搜索和返回照片将会起作用

共有2个答案

耿联
2023-03-14

奇怪的是,您使用json.stringify()将这个带有照片的对象转换回字符串,然后将该字符串添加到数组中。请看下面我的建议。

null

const existingArrayOfPhotos = [];

yamlString = `Photos:
      - id: Photo1
        Type: Color
        Shade: Grey
      - id: Photo2
        Type: Color
        Shade: Red`
        
const photoData = YAML.parse(yamlString);
existingArrayOfPhotos.push(...photoData.Photos)
const foundPhoto = existingArrayOfPhotos.find((photo) => photo.id == "Photo1");

console.log(foundPhoto);
<script src="https://cdnjs.cloudflare.com/ajax/libs/yamljs/0.3.0/yaml.min.js"></script>
通正平
2023-03-14

您的数据在photos对象中,然后推入一个空数组。所以当你从数组中查找时,你需要从正确的位置得到它。

正确的代码

null

(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");
 类似资料:
  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议:

  • 问题内容: 这很简单,但是很挣扎。帮助我。 我有一个json数据{“ abc”:“ test”,“ bed”:“ cot”,“ help”:“ me”} 我想将上面的jsonObject转换为JSON ARRAY,例如[{“ abc”:“ test”,“ bed”:“ cot”,“ help”:“ me”}] 我只得到价值观。请帮我解决这个问题。 问题答案: 直接将JsonObject即obj放入

  • 问题内容: 我希望能够从Java操作方法中的JSON字符串访问属性。只需说一下即可使用该字符串。下面是该字符串的示例: 在此字符串中,每个JSON对象都包含其他JSON对象的数组。目的是提取ID列表,其中任何给定对象都具有包含其他JSON对象的group属性。我将Google的Gson视为潜在的JSON插件。谁能提供某种形式的指导,说明如何从此JSON字符串生成Java? 问题答案: 我将Goog

  • 问题内容: 我正在将struts2用于Action,将jquery用于UI … 我想知道如何将Map对象转换为JSON对象并将其发送回UI, 现在可以在JSP页面中将其打印为普通的Java Map对象: 但我希望它是这样的: 我将如何实现这一目标…? 问题答案: 尝试Gson: 不过,我不建议将这种代码放入JSP。诸如此类的事情应该存在于Servlet或Action类之类的控制器中。 您还绝对不希

  • 我需要将实体对象转换为json。我把 到 servlet 配置文件,因此 Spring 可以自动将对象转换为 json 格式。但Spring没有这样做。我还在项目中添加了杰克逊罐子。 控制器方法 小组学生 } 在浏览器中,我发现我有 406 错误和错误窗口错误[对象对象]。 如果有人知道问题出在哪里,我会很高兴得到帮助。 谢谢。