Разбор вложенного объекта в строке JSON

#javascript #json #string #parsing

#язык JavaScript #json #строка #разбор

Вопрос:

У меня есть этот код:

 let test = '{"attribute_as":"plan_id","operator":"fromTo","values":"{"from":"70","to":"80"}"}'; console.log(JSON.parse(test));  

Это, конечно, не получится, потому что у values меня есть объект. Есть ли какой-либо вариант, как легко проанализировать эту строку? Или это вообще невозможно?

В конце концов результат должен быть:

 {  attribute_as: 'plan_id',  operator: 'fromTo',  values: {  from: 70,  to: 80  } }  

Комментарии:

1. Попробуйте эту строку json: '{"attribute_as":"plan_id","operator":"fromTo","values":{"from":70,"to":80}}' я думаю, что ошибка была просто неуместной кавычкой

2. у вас ошибка в значениях ключа, его строка не является объектом, и вам нужно экранировать «внутреннее значение», если вам нужна строка, либо вы откладываете, чтобы иметь объект

3. Откуда ты берешь веревочку? Если оно исходит из источника, который вы можете контролировать, самый простой способ-зафиксировать строку в реальном JSON.

Ответ №1:

Строка неверна:

 let err = '{"attribute_as":"plan_id","operator":"fromTo","values":"{"from":"70","to":"80"}"}'; // This is the original string let pass = '{"attribute_as":"plan_id","operator":"fromTo","values":{"from":70,"to":80}}'; // Corrected string  let desiredObj = {  attribute_as: 'plan_id',  operator: 'fromTo',  values: {  from: 70,  to: 80  } };  console.log(JSON.stringify(desiredObj) == err); console.log(JSON.stringify(desiredObj) == pass); 

Ответ №2:

Это должно сработать. При регистрации оба оцениваются правильно.

 let  test = '{"attribute_as": "plan_id","operator": "fromTo","values": {"from": 70,"to": 80}}',  test2 = {  attribute_as: 'plan_id',  operator: 'fromTo',  values: {  from: 70,  to: 80  }  }  console.log(JSON.parse(test)); console.log(JSON.stringify(test2));