Debo
Debo

Reputation: 545

Extract Value from Json string in Ionic 2

I am using OAuth2 for authorization in my Ionic 2 App and the decoded token response(which I am getting from the BASE64.decode() function) is like the below(key-value form).I am storing it in a variable called 'tokendata' of type 'any'. Now I want to extract values from this decoded token. Now if I simply do 'tokendata.personnelnbr', it is not working. Also if I do a 'json.parse(tokendata) or a json.parse('tokendata'), store it in another variable say 'myVar' and then try to access 'myVar.personnelnbr', then also it is not working. Please help with the solution!

{
"client_id":"xxx",
"scope":"user_profile",
"sub":"yyy",
"amr":"external",
"auth_time":1499753830,
"idp":"eso_enterprise",
"upn":"yyy",
"email":"yyy",
"samaccount_name":"yyy",
"peoplekey":"1169",
"personnelnbr":"1108",
"given_name":"Deblina",
"sn":"Dutta Chowdhury",
"exp":1499,
"nbf":1499
}

The method where I am trying to access the 'personnelnbr' field is given below:

private initializeApp(): void 
  {
    this.platform.ready().then(() => {
      console.log("Before login Deblina");
      /**
       * Read in app configuration, get an oAuthV1 ESO token, register device with REBAR Notification Services
       */
       this.configService.Initialize().subscribe(
        () => this.esoService.getV2Token().subscribe(
          (v2Token) => {

            this.tokendata = BASE64.decode(v2Token);
            alert("Token Deblina decoded: " + BASE64.decode(v2Token));
            console.log("Token Deblina decoded: " + BASE64.decode(v2Token));

            this.concatenatedToken = "'" +this.tokendata+ "'";
            alert(this.concatenatedToken);
            console.log(this.concatenatedToken);

            this.myVar = JSON.parse(this.tokendata);
            alert("Now:" + this.myVar.personnelnbr);
            console.log("Now:" + this.myVar.personnelnbr);

            this.myVar = JSON.parse(this.concatenatedToken);
            alert("Now:" + this.myVar.personnelnbr);
            console.log("Now:" + this.myVar.personnelnbr);

          },

          (error) => console.log(error),
          () => { this.nav.setRoot(HomePage)}
        ),
        (error) => console.log(error)
      );

    });

  } 

Upvotes: 0

Views: 1114

Answers (1)

Mankeomorakort
Mankeomorakort

Reputation: 1471

If you just want to to extract value, you can do this:

let datas = {
            "client_id":"xxx",
            "scope":"user_profile",
            "sub":"yyy",
            "amr":"external",
            "auth_time":1499753830,
            "idp":"eso_enterprise",
            "upn":"yyy",
            "email":"yyy",
            "samaccount_name":"yyy",
            "peoplekey":"1169",
            "personnelnbr":"1108",
            "given_name":"Deblina",
            "sn":"Dutta Chowdhury",
            "exp":1499,
            "nbf":1499
        };
for (let key in datas) {
    console.log(key + " => " + datas[key]);
}

Upvotes: 3

Related Questions