Замена элементов в JSON на Javascript - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в javascript. Я пытаюсь заменить элементы JSON заданными значениями, переданными из другой функции. Когда я анализирую объект, я получаю сообщение об ошибке неожиданный токен на pos 0.

Спасибо.

var defaultMessage = {
    "MTI": "1101",
    dataElements: {
        "DE01": "101",
        "DE02": "201",
        "DE03": "301",
        "DE04": "401",
        "DE05": "501",
        "DE06": "601",
        "DE07": "701"
    }
}


replaceDefaultElements: (testElements) => {
    console.info(testElements)
    console.info(defaultMessage);
    var messageElements = JSON.parse(defaultMessage.dataElements);
    Object.keys(testElements).forEach(function (key) {
        messageElements[key] = testElements[key];
    });
    return messageElements;
}

//Calling from JEST test function:

test('Should be ', () => {
    expect(functions.replaceDefaultElements('{"MTI":"1101",{"DE01":"XXX"}}')).toEqual({
        "MTI": "1101",
        dataElements: {
            "DE01": "XXX",
            "DE02": "201",
            "DE03": "301",
            "DE04": "401",
            "DE05": "501",
            "DE06": "601",
            "DE07": "701"
        }
    })

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Замените JSON.parse(defaultMessage.dataElements) на defaultMessage.dataElements

Замените Object.keys(testElements) на Object.keys(JSON.parse(testElements))

Надеюсь, это сработает

1 голос
/ 09 мая 2020

Когда я анализирую объект, я получаю сообщение об ошибке неожиданный токен в pos 0.

defaultMessage.dataElements - это объект JavaScript. Это не JSON.

Не используйте здесь JSON.parse.

testElements, с другой стороны, это JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...