相关疑难解决方法(0)

如何将JSON对象强制转换为typescript类

我从远程REST服务器读取了一个JSON对象.此JSON对象具有typescript类的所有属性(按设计).如何将收到的JSON对象强制转换为类型var?

我不想填充一个typescript var(即有一个带有这个JSON对象的构造函数).它很大并且通过属性按子对象和属性跨子对象复制所有内容将花费大量时间.

更新:您可以将其转换为打字稿界面!

json typescript

348
推荐指数
14
解决办法
38万
查看次数

将JSON对象映射到Javascript对象

当使用AJAX时,我倾向于以JSON对象(又称Javascript)的形式将对象从我的服务器传递给Javascript.我的Javascript中的某些函数依赖于我正在使用的特定类型的对象.例如,让我们使用电话号码.我有一个构造函数:

function PhoneNumber(number, type, isPrimary, contactId, id, className) {
    this.number = number;
    this.type = type;
    this.isPrimary = isPrimary;
    this.contactId = contactId;
    this.id = id;
    this.className = className;
}
Run Code Online (Sandbox Code Playgroud)

在我的Javascript中创建电话号码对象时使用的.在某些情况下,我不在JS中创建对象,我从服务器获取对象,因此它以具有完全相同字段的通用对象的形式出现.因此,当我的代码依赖于特定类型时,使用如下内容:

var objType = objArray[i].constructor.name;
var mappedObj;

switch(objType) {
    case 'PhoneNumber':
        currentArray = currentArray.phone;
        //Convert response to javascript object.
        mappedObj = mapPhone(jsonResponse[i]);
        break;
    case 'Email':
        currentArray = currentArray.email;
        mappedObj = mapEmail(jsonResponse[i]);
        break;
    case 'Address':
        currentArray = currentArray.address;
        mappedObj = mapAddress(jsonResponse[i]);
        break;
    case 'Website':
        currentArray = currentArray.website;
        mappedObj = mapWebsite(jsonResponse[i]);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我检查对象构造函数的名称,并根据该名称设置某些变量.如果我检查名称的对象是来自服务器的JSON,它只是给我一个通用的"对象"响应,因此代码不起作用.我通过为每个对象使用映射函数来解决这个问题,例如:

function …
Run Code Online (Sandbox Code Playgroud)

javascript json

17
推荐指数
2
解决办法
3万
查看次数

Angular 2映射http响应类的实例

我想知道将get响应中的http响应映射到类而不是基本Javascript对象的最佳方法是什么.

在我目前的尝试中,我很简单new ClassName(data),但可能有一个模糊的Angular指定和完全令人敬畏的方式,我不知道.

这是我目前的代码:

getPost(id:number){
    return this._http.get(this._postsUrl+'/'+id)
                .map(res => new Post(res.json().data))
                .do(data => console.log(data))
                .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

我需要Post成为一个类,而不仅仅是一个接口,因为我有内部方法.

我按照HeroTutorial和http"开发人员指南"进行操作,并按照他们的getHeroes方法执行:

getHeroes () {
return this.http.get(this._heroesUrl)
                .map(res => <Hero[]> res.json().data)
                .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

我不知何故希望这<Hero[]>部分能做到这一点:拿Hero类并创建它的新实例,但我的测试表明它没有,这几乎只是Typescript知道会发生什么.

有任何想法吗 ?谢谢!

http angular

15
推荐指数
1
解决办法
7980
查看次数

在javascript中将普通对象转换为函数实例("类")

function Person() {
      var self = this;

      self.personName="";
      self.animals=[];
}

function Animal(){
     var self=this;

     self.animalName="";
     self.run=function(meters){
         .....
     }
}
Run Code Online (Sandbox Code Playgroud)

服务器响应:

 [{personName:John,animals:[{animalName:cheetah},{animalName:giraffe}]} , {personName:Smith,animals:[{animalName:cat},{animalName:dog}]} ]
Run Code Online (Sandbox Code Playgroud)

我从服务器获取Person数组.我想将通用Person数组转换为类型Person数组.所以我可以使用

 persons[0].Animals[2].Run();
Run Code Online (Sandbox Code Playgroud)

我创建了Javascript

 Object.create(Person,person1);
Run Code Online (Sandbox Code Playgroud)

但我希望它的跨浏览器版本支持阵列

  ObjectArray.create(Person,persons);
Run Code Online (Sandbox Code Playgroud)

要么

 Object.create(Person[],persons);
Run Code Online (Sandbox Code Playgroud)

javascript casting

14
推荐指数
1
解决办法
2万
查看次数

使用JSON初始化JavaScript对象

我想做以下事情

var my_json = {
    a : 'lemon',
    b : 1
}

function obj(json){
    this.a = 'apple';
    this.b = 0;
    this.c = 'other default';
}
Run Code Online (Sandbox Code Playgroud)

分配后

var instance = obj(my_json)
Run Code Online (Sandbox Code Playgroud)

我想得到

instance.a == 'lemon'
Run Code Online (Sandbox Code Playgroud)

javascript json

3
推荐指数
1
解决办法
1万
查看次数

JSON.parse 后对象中的函数不再是函数

我有这样的模型:

export default class UserObject
{
    name: string;
    id: string;

    validateInsert()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

如果我喜欢这样:

const modelUser: UserModel = new UserModel();
modelUser.ID = 1;
modelUser.Name = "Ibrahim Aziz";
modelUser.validateInsert();
Run Code Online (Sandbox Code Playgroud)

一切工作正常,但如果我这样做:

modelUser = JSON.parse(stringJSONUser);
modelUser.validateInsert();
Run Code Online (Sandbox Code Playgroud)

我会收到错误消息,说 validate insert 不是一个函数,似乎 JSON 解析只传递值,甚至不启动它自己的对象,知道吗?

javascript rest json typescript angular

2
推荐指数
1
解决办法
4082
查看次数

标签 统计

javascript ×4

json ×4

angular ×2

typescript ×2

casting ×1

http ×1

rest ×1