首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于在Javascript #EXIF数据中将对象转换为JSON的JSON.stringify问题

关于在Javascript #EXIF数据中将对象转换为JSON的JSON.stringify问题
EN

Stack Overflow用户
提问于 2018-08-03 10:11:51
回答 1查看 223关注 0票数 0

对象对json很简单,但不知道我的代码发生了什么。

所以我想用PHP读取图像元数据(最重要的是图像创建日期-时间),但是iPhone和其他手机不发送这些信息与图像,它的工作,如果尝试上传使用PC。但是如果图像被压缩,那么我们就失去了所有的元数据。

因此,使用php读取元数据是没有用的,于是我决定通过JavaScript读取,并为此使用exif.js

对于多次上传,一切都很好,但是当我试图将对象转换为json时,我得到的是空字符串。

这是我的密码

代码语言:javascript
复制
$('#ServicePhotos').change(function(){ 
    $('#err_msg').html('');    
    var objects = {};
    var lg = this.files.length;
    for(var i = 0; i < lg; i++){
        (function(file){
            var file = file;
            var file_path = file.name;
            if(file_path){
                var startIndex = (file_path.indexOf('\\') >= 0 ? file_path.lastIndexOf('\\') : file_path.lastIndexOf('/'));
                var filename = file_path.substring(startIndex);
                if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
                filename = filename.substring(1); }
                //console.log('uploading image ' + filename);
            }
            EXIF.getData(file, function() {
                var exifData = EXIF.pretty(this);
                if (exifData) {
                    var allMetaData = EXIF.getAllTags(this);
                    var DateTime = EXIF.getTag(this, "DateTime");
                    objects[filename] = {'created':DateTime};
                }
            });
        })(this.files[i]);
    }
    console.log(objects); /*showing all data */
    var myJSON = JSON.stringify(objects);
    console.log(myJSON); /* EMPTY ??? */
    $('#err_msg').html(myJSON);
    $('#meta_data').val(myJSON);
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/exif-js/2.3.0/exif.js"></script>

<input id="ServicePhotos" type="file"  />
<div id="err_msg"></div>

现在这里的 "var myJSON“没有显示json数据

这是console.log

EN

回答 1

Stack Overflow用户

发布于 2018-08-03 10:23:44

如果不能对其进行字符串化,则可能意味着对象没有可枚举的属性。您可以测试您的对象属性是否为可计数,如果为真,则应该能够使用JSON.stringify()

来自MDN (https://developer.mozilla.org):

“所有其他对象实例(包括Map、Set、WeakMap和WeakSet)只能序列化它们的可枚举属性。”

来自文件:

对象/JSON/stringify

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51670366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档