Преобразование дочернего массива в строку в многомерном массиве - PullRequest
2 голосов
/ 10 июля 2019

Я пытаюсь обновить одно значение (ElementStatus) в указанном ниже многомерном файле JSON.

BuildingID: 1521
BuildingName: "PEN LLOYD BUILDING"
BuildingNumber: "A"
ElementList: Array(15)
0: {ElementID: 114, SurveyTypeID: 3, Code: "M.01.01.01", ElementDescription: "M.01.01.01 Boilers/Plant", ElementStatus: "null"}
1: {ElementID: 115, SurveyTypeID: 3, Code: "M.01.01.02", ElementDescription: "M.01.01.02 Heat Emitters", ElementStatus: "null"}
2: {ElementID: 116, SurveyTypeID: 3, Code: "M.01.01.03", ElementDescription: "M.01.01.03 Distribution", ElementStatus: "completed"}

Вот код


    var newData=JSON.parse(success);                      
     const data1 = newData[0].results.recordset[0].ElementList;
     //console.log(data1.toArray());              
     var array=JSON.parse(data1)
     array.forEach(function(element){
      if(element.ElementDescription==elementsName)
       {
          element.ElementStatus="completed"
       }
     })  
     newData[0].results.recordset[0].ElementList=array  


После итерациичерез цикл forEach я получаю ElementList в формате Array.Но я хочу, чтобы это было в строковом формате, как это было раньше.

1 Ответ

1 голос
/ 10 июля 2019

Есть ряд проблем с кодом, который вы показываете.Данные, которые вы показываете, не в правильном формате JSON, поэтому они сразу же потерпят неудачу.

Я переработал ваш пример, чтобы показать правильный ввод с выводом JSON.

let elementsName = "M.01.01.01 Boilers/Plant";
let success = `{"BuildingID": 1521,
"BuildingName": "PEN LLOYD BUILDING",
"BuildingNumber": "A",
"ElementList": 
[{"ElementID": 114, "SurveyTypeID": 3, "Code": "M.01.01.01", "ElementDescription": "M.01.01.01 Boilers/Plant", "ElementStatus": null},
{"ElementID": 115, "SurveyTypeID": 3, "Code": "M.01.01.02", "ElementDescription": "M.01.01.02 Heat Emitters", "ElementStatus": null},
{"ElementID": 116, "SurveyTypeID": 3, "Code": "M.01.01.03", "ElementDescription": "M.01.01.03 Distribution", "ElementStatus": "completed"}]}`;

let newData=JSON.parse(success);                      
newData.ElementList.forEach(function(element){
  if(element.ElementDescription==elementsName)
    {
      element.ElementStatus="completed"
    }
  });
let outputString = JSON.stringify(newData);
console.log(outputString);
...