在Angular 2

时间:2016-11-21 23:43:17

标签: json angular auth0

我在angular2应用程序中使用Auth0,一旦用户登录auth0服务,就会发送一个包含用户个人资料信息的响应。

根据用户选择的登录方法,响应可以有许多不同的方式。我只是想在响应中拆分电子邮件地址。

这是典型的回应,

Object
clientID
:
"skdjcbjlwrjlw"
created_at
:
"2016-10-15T06:03:44.636Z"
email
:
"nick@example.com"
email_verified
:
true
family_name
:
"Walker"
gender
:
"male"
given_name
:
"Paul"
global_client_id
:
"ojwebcvjoweojewhc"
identities
:
Array[1]
locale
:
"en"
name
:
"Paul Walker"
nickname
:
"nick"
picture
:
"https://lh4.googleusercontent.com/photo.jpg"
updated_at
:
"2016-11-21T22:29:33.158Z"
user_id
:
"google-oauth2|102515181977826170152"
__proto__
:
Object

现在,当我收到该回复时,我将此电子邮件地址拆分为

  1. 我创建了一个用于保存电子邮件地址的课程

    export class User { constructor( public email: string, ) { } }

  2. 我实例化对象,
    user: Object;

  3. 我将电子邮件从个人资料对象移至user

  4. this.user = profile.email;

    此时的问题是我需要电子邮件为JSON格式。所以我用,

    var email = JSON.stringify(this.user);
    

    但当我console.log(email);时 我得到myemail@example.com而不是json。

    所以,此时,

     console.log(profile); // outputs json of whole profile
            this.user = profile.email;
            console.log(this.user); // outputs just the email address
             var email = JSON.stringify(this.user); 
            console.log(email);   // expects json gets email@example.com
    

    我需要email成为真正的json。我没有正确使用JSON.stringify(this.user);吗?

1 个答案:

答案 0 :(得分:0)

为了提高知名度,我将JB Nizet的评论作为社区维基回答。

第2步,没有实例化任何内容。它声明了一个Object类型的变量。

第3步,将profile.email(可能是字符串)分配给该变量。如果user应该是User,则其类型应为User,而不是Object。而且你不应该为该变量分配一个字符串。要创建User的实例,语法为new User(theEmail)

检查typescriptlang.org/docs/handbook/classes.html以供参考。