javascript - 将 JSON 解析为对象数组

标签 javascript json

<分区>

我在将 JSON 解析为对象数组时遇到问题。

我有三个 JavaScript 类

  1. 宠物
  2. 猫扩展宠物
  3. 狗扩展宠物

我想创建 Pet 对象数组,然后我想将它作为 JSON 存储在浏览器本地存储中。

问题:

当我检索 JSON 并将其解析为对象数组时,元素的原型(prototype)从 Cat 或 Dog 更改为 Object,因此当我测试时

pets[0] instanceof Cat // always false
pets[0] instanceof Dog // always false

有没有办法让元素的原型(prototype)保持为原来的非对象?

类:

function Pet(imageUrl, name, soundUrl) {
    this.imageUrl = imageUrl;
    this.name = name;
    this.soundUrl = soundUrl;
    this.talk = function() {
    };
}
function Cat(imageUrl, name, soundUrl, favoriteFood) {
    Pet.apply(this,arguments);
    this.favoriteFood=favoriteFood;
}
Cat.prototype=new Pet();
Cat.prototype.constructor = Cat;
function Dog(imageUrl, name, soundUrl, walkingTime) {
    Pet.apply(this,arguments);
    this.walkingTime=walkingTime;
}
Dog.prototype=new Pet();
Dog.prototype.constructor = Dog;

创建数组后我必须将它保存到浏览器本地存储

var pets=[];
var cat = new Cat('imageUrl','name','soundUrl','favoriteFood');
pets.push(cat);
localStorage.setItem('pets', JSON.stringify(pets));

获取数组:

        if (localStorage.getItem('pets') !== null)
    {
     var pets = JSON.parse(localStorage.getItem('pets'));
    }

最佳答案

是的,在 JSON 中你只有普通对象(和数组)。我能看到处理这个问题的唯一方法是添加一个额外的属性给类,然后在解析 JSON 之后,您需要将生成的对象转换为动物(以某种方式赋予它们生命)。

关于javascript - 将 JSON 解析为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23738573/

相关文章:

javascript - JS 计算重复出现次数

JavaScript - 立即将变量写入函数

php - 使用 NotORM 在 mysql 中最后插入和更新的行

json - react-native 如何从本地JSON文件中获取数据?

使用 JSON 的 JavaScript 编程逻辑

json - roboMongo 导出到 csv 输出显示 bson

javascript - 单击新添加的列表项时 jQuery 单击事件未触发

javascript - 如何模拟模拟find()的toArray()?

javascript - 在 IEEE 754 和 JavaScript 中,0 和 -0 的表示方式有何不同?

json - 如何在Reduce函数中显示值