首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Angular 2序列化和反序列化JSON

使用Angular 2序列化和反序列化JSON
EN

Stack Overflow用户
提问于 2017-10-28 02:29:34
回答 1查看 3.4K关注 0票数 3

我想用Angular 2做一个浏览器应用程序,你可以在其中制作和分享模拟考试。我有一个Exam类实例,其中包含包含ExamQuestion类实例等的ExamSection类实例。

我希望应用程序能够保存和加载JSON格式的检查。我目前的解决方案是:

代码语言:javascript
复制
constructor(private http:Http) {
    this.http.get('Exam.json')
            .map((response) => {
              return response.json();

            }).subscribe(data => {
              this.exam = <Exam>data;
              //console.log(typeof(<Exam>data));
              console.log(this.exam);
              this.refreshMarksMethods(this.exam);
            });

}

第一个问题是JSON被反序列化为纯对象。我尝试使用serializer.ts (https://www.npmjs.com/package/serializer.ts)和类转换器(https://github.com/pleerock/class-transformer)对Angular使用的TypeScript类进行序列化和反序列化,但我一直收到与缺少模块相关的错误。据我所知,这些库的示例中没有引用缺失的模块,所以我不知道它们属于哪里。

我试图解决这个问题的一个技巧是将普通对象转换为所需的Typescript类型,但这不起作用(对象类型不变)。因为对象是普通对象,所以我去掉了方法和像length这样的属性(对于数组)。

谁能给我解释一下在Angular应用程序中如何在TypeScript对象和JSON对象之间进行转换,包括所需的库如何以及在哪里?有时将模块放在"node_modules“文件夹中是可行的,有时它属于"src”文件夹中的某个位置(我通常需要反复试验才能解决这个问题)。

编辑:我得到了一个老套的解决方案,JSON中描述的对象有一个“反序列化”方法,用于递归地重新构造类实例。我希望有人能解释如何使用不同的解决方案,因为我怀疑我目前的解决方案是否适用于大型项目。

EN

回答 1

Stack Overflow用户

发布于 2018-01-16 19:56:33

我做了一个名为json-dry的小包。它支持(循环)引用和类实例。

您必须定义两个类方法(原型上的toDry和静态方法的unDry ),注册类,然后就可以了。

我已经使用它很多年了,它也能够序列化非常大的集合。

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

https://stackoverflow.com/questions/46981353

复制
相关文章

相似问题

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