获取数据并为Json对象添加标题

时间:2019-05-27 18:11:20

标签: javascript arrays json object

我想为我的JSON对象添加标题,我希望实现的结构是:

{
"posts": [
    {
        "title": "put title here",
        "upvotes": 1234,
        "score": 1000,
        "num_comments": 100,
        "created": "16.05.2019 12:12",
    },
]
}

我能够获取数据并将其放入由26个元素组成的数组中,一切都很好,但是我希望以某种方式添加此“ posts”,使其高于其余部分,这是我的代码:

fetch("https://www.reddit.com/r/funny.json")
.then(resp => resp.json()
.then(async res => {
   let posts = await res.data.children.map(el => {
    let title = el.data.title;
    let upvote = el.data.ups;
    let score = el.data.score;
    let comments = el.data.num_comments;
    let created = el.data.created;
    const allPosts = {title, upvote, score, comments, created}
    postList.push(allPosts)
    return postList
})  
console.log(posts);

    return posts    
})

4 个答案:

答案 0 :(得分:1)

您可能需要创建如下所示的对象

  

{propertyName:value}

    const allPosts = {title:title,upvote: upvote,score: score,comments: comments, created:created}
postList.push(allPosts)

答案 1 :(得分:1)

  fetch("https://www.reddit.com/r/funny.json")
  .then(resp => resp.json())
  .then(async res => {
    console.log(res);
    let posts = await res.data.children.map(el => {
      let title = el.data.title;
      let upvote = el.data.ups;
      let score = el.data.score;
      let comments = el.data.num_comments;
      let created = el.data.created;
      const allPosts = { title, upvote, score, comments, created };
      let postList = [];
      postList.push(allPosts);
      return postList;
    });
    console.log({"posts": posts});

    return {"posts": posts};
  });

答案 2 :(得分:0)

您可以尝试以下代码。

fetch("https://www.reddit.com/r/funny.json")
.then(resp => resp.json())
.then(res => ({
  posts: res.data.children.map(el => ({
    title: el.data.title,
    upvote: el.data.upvote,
    score: el.data.score,
    comments: el.data.num_comments,
    created: el.data.created
  }))
}))
.then(posts => {
  console.log(posts);
});

答案 3 :(得分:0)

您可以通过以下方式做到这一点:

fetch("https://www.reddit.com/r/funny.json")
    .then(resp => resp.json()
        .then(async res => {
            let posts = await res.data.children.map(el => {
                return {
                    title: el.data.title,
                    upvote: el.data.ups,
                    score: el.data.score,
                    comments: el.data.num_comments,
                    created: el.data.created
                }
            })
            const postObject = { posts }
            console.log(postObject);
            return postObject
        })

Map函数的返回值,通过这种方式,您可以获得带有键(帖子)和值(带有详细信息的对象)的对象。