2
votes

Obtention de valeur angulaire à partir d'un objet objet

Je voudrais extraire la valeur du JSON ci-dessous (resReturn.result.gamingdata.original.success)

Je me demande simplement pourquoi je ne peux obtenir la valeur que si je fais plusieurs fois stringify et parse. p >

Quelqu'un peut-il me dire comment simplifier mon code?

JSON:

          let resReturnJSON = JSON.stringify(this.UploadstatusGamingDataExcel.resReturn);
          let resultobj = JSON.parse(resReturnJSON || '{}').result;
          let resultJSON = JSON.stringify(resultobj);
          let gamingdataobj = JSON.parse(resultJSON || '{}').gamingdata;
          let gamingdataJSON = JSON.stringify(gamingdataobj);
          let originalObj = JSON.parse(gamingdataJSON || '{}').original;
          let originalJSON = JSON.stringify(originalObj);
          let successObj = JSON.parse(originalJSON || '{}').success;
          console.log(successObj);

}

Mon code:

{
    "status":"Success",
    "message":"100",
    "resReturn":
    {
        "result":{
            "gamingdata":
            {
                    "headers":{},
                    "original":{"success":"Gaming Data Excel - upload success"},
                    "exception":null
            }
    }
}


3 Réponses :


1
votes

Vérifiez la la véracité pour chaque propriété jusqu'à ce que vous atteigniez la propriété success et que vous la renvoyiez si elle est trouvée ou que vous retourniez une chaîne vide.

const data = {
  "status": "Success",
  "message": "100",
  "resReturn": {
    "result": {
      "gamingdata": {
        "headers": {},
        "original": {
          "success": "Gaming Data Excel - upload success"
        },
        "exception": null
      }
    }
  }
};

const success = (data.resReturn &&
    data.resReturn.result &&
    data.resReturn.result.gamingdata &&
    data.resReturn.result.gamingdata.original.success) ?
    data.resReturn.result.gamingdata.original.success : '';

console.log(success);


0 commentaires

1
votes
const value = {
    "status": "Success",
    "message": "100",
    "resReturn":
    {
        "result": {
            "gamingdata":
            {
                "headers": {},
                "original": { "success": "Gaming Data Excel - upload success" },
                "exception": null
            }
        }
    }
}
const jsonValue = JSON.stringify(value);
const valueFromJson = JSON.parse(jsonValue);
const success = (((((valueFromJson || {}).resReturn || {}).result || {}).gamingdata || {}).original || {}).success;

0 commentaires

1
votes

Si vous voulez une fonction généralisée pour json ayant un tableau et des objets, vous pouvez utiliser ceci,

    let obj: any;
    try {
        if (data.resReturn.result.gamingdata.original.success) {
            obj = data.resReturn.result.gamingdata.original.success
        }      
    } catch(e) {
        obj = null
    }
    console.log(obj);

J'ai encore une solution plus simple:

const data = {
      "status": "Success",
      "message": "100",
      "resReturn": {
        "result": {
          "gamingdata": {
            "headers": {},
            "original": {
              "success": "Gaming Data Excel - upload success"
            },
            "exception": null
          }
        }
      }
    };

    const get = (p, o) =>
      p.reduce((xs, x) =>
        (xs && xs[x]) ? xs[x] : null, o)


    console.log(get(['resReturn', 'result', 'gamingdata', 'original', 'success'], data));


0 commentaires