Как обрабатывать JSON массив строк в node js - PullRequest
1 голос
/ 01 августа 2020

У меня есть Json в этом ключевом значении хобби в строке, как с этим справиться и получить ожидаемый результат. Файл, который содержит фактические данные. Здесь я не могу передать ключевое значение Вот мой код

const arr = [];
const file = [
  {
    name: "same",
    hobby: '{ "name": "music", "type": "jazz" }'
  },
];
file.forEach((item) => {
  Object.keys(JSON.parse(item.hobby)).forEach((key) => {
    const base = { ...item, hobby_name: "", hobby_type: "" };
    base.hobby_name= key;
    base.hobby_type= base.hobby_type[key];
    arr.push(base);
  });
});
console.log(arr);

вывод:

[ 
 {
    name: "sam",
    content: '{ "h_name": "music", "h_type": "jazz" }',
    content1: "h_name"
    constent2: ""

  },
{
    name: "sam",
    content: '{ "h_name": "music", "h_type": "jazz" }',
    content1: "h_type"
    constent2: ""

  },
];

Ожидаемый результат:

 [ 
     {
        name: "sam",
        content: '{ "h_name": "music", "h_type": "jazz" }',
        content1: "h_name"
        constent2: "music"
    
      },
    {
        name: "sam",
        content: '{ "h_name": "music", "h_type": "jazz" }',
        content1: "h_type"
        constent2: "jazz"
    
      },
    ];

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

const file = [
  {
    name: "same",
    hobby: '{ "name": "music", "type": "jazz" }'
  },
];

let dd = []

file.forEach(
  (it)=>{
    let val = JSON.parse(it.hobby)
    Object.keys(val).map(hby=>
     {
      
      dd.push({
        name:it.name,
        content:it.hobby,
        content1:`h_${hby}`,
        constent2:val[hby]
        })
    }
  )})

console.log(dd)
0 голосов
/ 01 августа 2020

Я только что внес некоторые изменения в ваш код:

const arr = [];
const file = [
  {
    name: "same",
    hobby: '{ "name": "music", "type": "jazz" }'
  },
];
file.forEach((item) => {
  const hobbyObj = JSON.parse(item.hobby);
  
  Object.keys(hobbyObj).forEach((key) => {
    const base = { ...item, hobby_name: "", hobby_type: "" };
    
    base.hobby_name= key;
    base.hobby_type= hobbyObj[key];
    
    arr.push(base);
  });
});
console.log(arr);
0 голосов
/ 01 августа 2020

Вам нужно получить значения из проанализированного объекта JSON:

const arr = [];
const file = [
  {
    name: "same",
    hobby: '{ "name": "music", "type": "jazz" }'
  },
];
file.forEach((item) => {
  let hobby = JSON.parse(item.hobby);
  Object.keys(hobby).forEach((key) => {
    const base = { "name":item.name, "content":item.hobby };
    base.content1 = `h_${key}`;
    base.content2 = hobby[key];
    arr.push(base);
  });
});
console.log(arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...