Search code examples
javascriptreactjsreact-nativelodash

Convert error text from response api using javascript, react js


I have call api from server, and I handle error text from api.

Here is response from api.

{
    response : {
        data: {
            "errorCode": "99",
            "errorType": "UNEXPECTED_ERROR",
            "developerMessage": "400 : [{\"errorCode\":\"91\",\"developerMessage\":\"{\\\"errorCode\\\":\\\"10\\\",\\\"developerMessage\\\":\\\"Offer code not exits\\\"}\"}]",
        }
    }
}

I want to show error text from developerMessage prop. Like so: developerMessage: "Offer code not exits".

I used lodash to get that error, but not what I wanted.

const errorMessage = _.get(error, ['response', 'data', 'developerMessage', 400]);

How do I fix it to make it work?

Thank you so much.


Solution

  • You need to parse your response data using JSON.parse() at multi-level down the object hierarchy.

    let responseData = {
        response: {
            data: {
                "errorCode": "99",
                "errorType": "UNEXPECTED_ERROR",
                "developerMessage": "400 : [{\"errorCode\":\"91\",\"developerMessage\":\"{\\\"errorCode\\\":\\\"10\\\",\\\"developerMessage\\\":\\\"Offer code not exits\\\"}\"}]"
            }
        }
    };
    
    const getErrorMsg = (inputData) => {
        const devMsg = inputData.response.data.developerMessage;
        const errorMsg = JSON.parse(devMsg.slice(devMsg.indexOf("[")));
        return JSON.parse(errorMsg[0].developerMessage).developerMessage;
    }
    
    console.log(getErrorMsg(responseData));