并非JavaScript对象的所有属性都映射到JSON

时间:2014-01-22 00:38:29

标签: javascript jquery json filepicker.io

我正在使用Inkfilepicker.io在我正在处理的项目上进行图片上传。上传图片时,它会返回一个包含一些数据的JavaScript对象。不过我还需要更多。所以我使用他们的SDK查询他们的API以获得更多。然后我将此信息添加到每个对象。最后,我使用jQuery发布这些对象以在后端处理它。但是,第二批信息中没有一个用于后端骑行。我手动使用JSON.stringify()查看数据在发布之前的样子。新数据未包括在内。

fp.pickAndStore({multiple: true}, {}, function (InkBlobs)
    {
        InkBlobs = $.map(InkBlobs, function(blobio, index)
        {
            fp.stat(blobio, {
                width: true,
                height: true
            }, function(meta) {
                blobio.width = meta.width;
                blobio.height = meta.height;
            });

            return blobio;
        });
        console.log(InkBlobs);
        console.log(JSON.stringify(InkBlobs));
        $.post('/picture', { blobs: InkBlobs }, function(data)
        {
            console.log(data);
        }, 'json');
    });

如何确保发送所有属性?

更新

JSON.stringify()创建的字符串如下所示:

[{"url":"https://www.filepicker.io/api/file/PinzEEUlRhSCpc4dYa0w","filename":"browserWars.jpeg","mimetype":"image/jpeg","size":34284,"key":"Vx1xEuqHTKKCM4hjR6LL_browserWars.jpeg","container":"kandidlypictures","isWriteable":true},{"url":"https://www.filepicker.io/api/file/wdnWcCUWStiBxbrONeSN","filename":"1440-music-is-the-food.jpg","mimetype":"image/jpeg","size":97814,"key":"0RrSFSQBTCiifZ8ZkuIj_1440-music-is-the-food.jpg","container":"kandidlypictures","isWriteable":true},{"url":"https://www.filepicker.io/api/file/trdKhlORPCJEu3JRbPYf","filename":"any_browser.jpeg","mimetype":"image/jpeg","size":271194,"key":"1aJNE9MSEyEiAJZAacfD_any_browser.jpeg","container":"kandidlypictures","isWriteable":true}]

预期输出还应包括每个对象的宽度和高度。

1 个答案:

答案 0 :(得分:1)

使用单独的命名函数:

var data = {
           width: true,
           height: true
           };

var fn = function fn(meta)
  {
  blobio.width = meta.width;
  blobio.height = meta.height;

  $.post('/picture', { blobs: InkBlobs }, function(data)
    {
    console.log(data);
    }, 'json');
  };

fp.statSync(blobio, data, fn)

或者使用statSync,因为stat是异步的:

fp.statSync(blobio, {
                width: true,
                height: true
            }, function(meta) {
                blobio.width = meta.width;
                blobio.height = meta.height;
            });

<强>参考