【问题标题】:TypeScript how to format array of object to array of jsonTypeScript如何将对象数组格式化为json数组
【发布时间】:2017-07-30 01:46:05
【问题描述】:

我已经发布了类似_attachments 变量的数据:

我想准备要插入的数据,如下结构:

"_attachments": [
  {
    "container": "string",
    "fileName": "string",
    "name": "string",
    "mime": "string",
    "size": 0
  }
]

但是我做了什么:

for(let key in _attachments) {
  job._attachments[key]['container']  = _attachments[key]['container'];
  job._attachments[key]['fileName']  = _attachments[key]['fileName'];
  job._attachments[key]['name']      = _attachments[key]['name'];
  job._attachments[key]['mime']      = _attachments[key]['mime'];
  job._attachments[key]['size']      = _attachments[key]['size'];
}

给出这个错误:

 Unprocessable Entity

注意:我正在使用环回。

【问题讨论】:

  • 无法处理的实体? MongoDB这边?
  • @Aravind 当我将数据发布到 api 以插入此错误时发生。
  • 你直接设置job._attachments = _attachments检查了吗?根据您的对象键,我认为您不需要遍历所有“_attachments”

标签: json mongodb angular typescript


【解决方案1】:

JSON.stringify 将帮助您获取 json 格式的对象,而 JSON.parse 会将 JSON 转换回对象。

【讨论】:

    【解决方案2】:

    从屏幕截图中_attachments 似乎是一个数组;如果是这种情况,您不应该使用for...in 来迭代它,而是使用for..offor..in 将返回所有可枚举的属性,包括可能“不需要”的属性

    详情请见excellent MDN resource 底部(for..of 在 Typescript 中可用)

    for (let index of _attachments) {
    ...
    }
    

    更好的是,使用地图

    const result  = _attachments.map( att => ...)
    

    而且你映射的结构看起来与原始结构相同,为什么不使用直接赋值?

    【讨论】:

      【解决方案3】:

      只需将此添加到您的attachment.josn

      "id": {
        "type": "string",
        "id": true,
        "defaultFn": "uuid"
      }
      

      而且不需要循环数据。

      【讨论】:

        【解决方案4】:

        您需要对其进行字符串化。

        代码

        data = { 
            container: "Stuff"
        }
        
        var jsonString = JSON.stringify(data); 
        
        console.log(jsonString);
        

        之前

        之后

        这更像是您的数据的样子,

        【讨论】:

        • 当我想插入数据时仍然显示同样的问题
        • 但是如果我上传单个文件,我的插入工作。
        猜你喜欢
        • 1970-01-01
        • 2021-02-28
        • 1970-01-01
        • 2020-05-02
        • 2020-10-19
        • 2015-01-04
        • 2020-09-01
        • 2021-12-17
        • 1970-01-01
        相关资源
        最近更新 更多