JSON объект с атрибутами + массив, как переместить атрибуты внутри массива?

Есть ли способ достичь этого преобразования json, используя javascript?

вход

{
"server":"S1",
"timestamp":"123456",
"data":[
        {"device":"D1", "price":"50"},
        {"device":"D2", "price":"60"},
        {"device":"D3", "price":"70"}
     ]
}

выход

{
"data":[
     {"server":"S1", "timestamp":"123456", "device":"D1", "price":"50"},
     {"server":"S1", "timestamp":"123456", "device":"D2", "price":"60"},
     {"server":"S1", "timestamp":"123456", "device":"D3", "price":"70"}
]
}
-10
задан user52359 20 July 2019 в 16:15
поделиться

2 ответа

попробуйте это:

const data  = {
"server":"S1",
"timestamp":"123456",
"data":[
        {"device":"D1", "price":"50"},
        {"device":"D2", "price":"60"},
        {"device":"D3", "price":"70"}
     ]
}


result = {data: data.data.map(res=>({...res, ...{'timestamp': data.timestamp, 'server': data.server} }))}

console.log(result);
-1
ответ дан 9 September 2019 в 21:06
поделиться

Давайте скажем, что Ваш входной объект

var input = {
"server":"S1",
"timestamp":"123456",
"data":[
    {"device":"D1", "price":"50"},
    {"device":"D2", "price":"60"},
    {"device":"D3", "price":"70"}
 ]
  }

, можно преобразовать в ожидаемый вывод как,

let output = {
data:[]
 }

input.data.forEach(transformfunction);

function transformfunction(value,index,array){

  output.data.push(
             {
             "server":input.server,
             "timestamp":input.timestamp,
              "device":array[index].device,
              "price":array[index].price
          }
      );

  }

  console.log(JSON.stringify(output));

я надеюсь, что он помогает.

0
ответ дан 9 September 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: