Как динамически преобразовать из обычной строки в массив JSON в типографском Angular 8

#json #typescript #angular8

Вопрос:

Приведенный ниже (строка) возвращает массив JSON динамически в форме (строки):

 let test = '{ "UserDepartmentName": { "OldValue":"Abc123", "NewValue": "Abc123456"  }, "ModifiedDate": { "OldValue":"5/19/2021 12:37:22 PM", "NewValue": "5/24/2021 4:12:21 PM"  } }'
  }'
console.log(test)
 

Мне нужно преобразовать эту (строку) в (массив JSON), чтобы извлечь данные, как показано ниже:

 {
   "UserDepartmentName":{
      "OldValue":"Abc123",
      "NewValue":"Abc123456"
   },
   "ModifiedDate":{
      "OldValue":"5/19/2021 12:37:22 PM",
      "NewValue":"5/24/2021 4:12:21 PM"
   }
}
 

Для этого я использовал приведенную ниже технику, но первое значение UserDepartmentName не отображается:

 jsonconvert(json) {
 
    const obj = JSON.parse('{ "UserDepartmentName": { "OldValue":"Abc123", "NewValue": "Abc123456"  }, "ModifiedDate": { "OldValue":"5/19/2021 12:37:22 PM", "NewValue": "5/24/2021 4:12:21 PM"  } }');
 
    console.log(json);
 
    for (var i in obj) {
      console.log(obj[i]);
    }
 
  }
 

Как преобразовать (строковое) значение в (массив JSON) с помощью (машинописного текста в Angular 8)?

Примечание:

  • Строковые данные являются динамическими, и каждый раз они будут меняться
  • Первое значение в строке всегда меняется
  • Старое значение и новое значение всегда находятся под одним из объектов

Ответ №1:

Если вы войдете console.log(obj) в систему, вы увидите, что она анализируется. Если я запущу ваш код, он действительно зарегистрирует значение «Имя пользователя», но не сам ключ:

 {OldValue: "Abc123", NewValue: "Abc123456"}
{OldValue: "5/19/2021 12:37:22 PM", NewValue: "5/24/2021 4:12:21 PM"}
 

Если вы хотите зарегистрировать ключ, вы можете выполнить итерацию следующим образом:

 for (var i in obj) {
    console.log(i   '= ', obj[i]);
}