Как разобрать конкретный объект в angular или javascript?

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

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

{'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"
   }
]

Не очень понятно, что вы пытаетесь сделать, можете ли вы объяснить это получше? В вашем первом фрагменте JSON title — это строка, а не объект, во втором фрагменте — массив из двух элементов, title — это объект, что вы пытаетесь сделать?

SPlatten 06.03.2019 08:15

поясните пожалуйста чего вы хотите добиться

Akshay 06.03.2019 08:16

я обновил свой вопрос

Jhon Caylog 06.03.2019 08:17

ваше значение заголовка не соответствует правильной строке.... проверьте свой заголовок

sathish kumar 06.03.2019 08:20

есть ли решение, использующее этот формат>?

Jhon Caylog 06.03.2019 08:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
313
4

Ответы 4

Убедитесь, что у вас правильный формат в 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.info(title);

приведенный выше пример уже является ответом, который я получил, я могу изменить формат.

Jhon Caylog 06.03.2019 08:32

Второй пример 'instruction': 'Jude', 'cr…71, 'sub_title' точно неверный json, можете подтвердить, что вы получили ответ?

Vladimir Bogomolov 06.03.2019 08:37

Я получил эти данные из API, это данные ответа

Jhon Caylog 06.03.2019 08:43

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

satwik 06.03.2019 09:44

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.info(updatedJsonObj);

//updatedJsonObj will have your required format

@JhonCaylog спасибо за упоминание, исправил ответ

satwik 06.03.2019 09:34

Неожиданный токен 'в JSON в позиции 1

Jhon Caylog 06.03.2019 09:37

@JhonCaylog JSON, который вы предоставили, имеет проблемы, у вас есть правильный json? например: "{'title': 'Привет', 'instruction': 'Возьмите грустную песню… 75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}" отсутствует сингл цитата, а другой - совершенно неправильный json, если вы не укажете правильный json, никакое решение не сможет работать с этим набором данных. Пожалуйста, исправьте объект json

satwik 06.03.2019 09:40

это данные ответа, которые я получил от api bro

Jhon Caylog 06.03.2019 09:43

есть ли способ скрыть отсутствующую одинарную кавычку и сделать ее правильным json? не делая это вручную

Jhon Caylog 06.03.2019 09:44

когда вы используете его в своей программе, вы получите полный ответ (json), и тогда он будет работать, ничего там делать не нужно

satwik 06.03.2019 09:46

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

  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

.

Неожиданный токен t в JSON на позиции 117

Jhon Caylog 06.03.2019 09:31

Он работает, как и ожидалось, в консоли браузера, вы можете попробовать его в консоли.

Mayur Patil 06.03.2019 10:02

привет бро у меня вопрос

Jhon Caylog 07.03.2019 07:00

В чем вопрос? Пожалуйста спросите

Mayur Patil 08.03.2019 09:55

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

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

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

Демо

Другие вопросы по теме