Как разобрать конкретный объект в угловых или javascript? - PullRequest
1 голос
/ 06 марта 2019

Как мы будем анализировать следующий тип объекта в angular или javascript, возможно, используя для цикла поиска или синтаксического анализа?

Я хотел получить значение заголовка и присвоить его заголовку, потому что, как вы можете видеть, значение заголовка - объект:

{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}

вместо «Эй», как вы можете видеть на примере (то же самое и со вторым объектом). Есть ли способ, которым мы можем это сделать?

Массив объектов формата JSON:

[  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'cr…71, 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
]

Желаемый вывод:

[  
   {  
      id:0,
      title:"Hey"
   },
   {  
      id:1,
      title:"Assessment"
   }
]

Ответы [ 4 ]

2 голосов
/ 06 марта 2019

Убедитесь, что у вас правильный формат в json - двойные кавычки внутри и одинарные снаружи.

Вот так

'{"title": "Hey", "instruction": "Take a sad song a…75", "sub_title": "Jude", "timelimit": "01:05:01"}'

Тогда вы можете просто сделать это.

let jsonString = '{"title": "Hey", "instruction": "Take a sad song a…75", "sub_title": "Jude", "timelimit": "01:05:01"}';
let title = JSON.parse(jsonString).title;
console.log(title);
1 голос
/ 06 марта 2019

var jsonObj = [  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'cr…71, 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
];


var updatedJsonObj = jsonObj.map( obj => { 
  return {
      ...obj, 
      title: JSON.parse(obj.title).title
  } 
});

console.log(updatedJsonObj);

//updatedJsonObj will have your required format
0 голосов
/ 06 марта 2019

Как уже говорили другие, ваш json недействителен, но, поскольку вы упомянули, что это то, что вы получаете от своего бэкэнда, и вы не можете его изменить, я предлагаю рассматривать ваш заголовок как строку и использовать строковые операции, чтобы получить желаемое значение.

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

<div ng-repeat="item in data">
  {{item.id}} - 
  {{item.title.split('\'')[3]}}
</div>    

Демо

0 голосов
/ 06 марта 2019

Здесь мы делаем следующие шаги

  1. Итерация по массиву
  2. Для каждого объекта поле заголовка не является допустимым JSON.сделайте его действительным, используя title.replace(/'/g, '"').Тогда разбери JSON.
  3. Затем присвойте заголовок проанализированного JSON заголовку объекта

Вот код

arr = [  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75', 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
]

arr =  arr.map((e)=> { e.title = JSON.parse(e.title.replace(/'/g, '"')).title; return e; })
// expected result is in arr

.

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