avaliação de javascript e avaliação de objetos

Eu tenho uma parte de uma estrutura de depuração que precisa ser capaz de executar objetos de avaliação de tempo.

Especificamente, se eu tiver uma string como esta"{a: 1, b:2}" precisa avaliá-lo em um objeto com membrosa eb com esses valores. No entanto, se eu fizereval("{a: 1, b:2}") parece avaliá-lo como uma declaração e diz algo sobre um rótulo ilegal.

Eu o hackeei para que ele avalie assim:

eval("var x=" + str + "; x;");

o que parece funcionar, mas parece um truque horrível. Alguma sugestão sobre como fazer isso melhor?

(BTW, estou ciente dos perigos do eval, mas isso faz parte de uma estrutura de depuração que não será vista pelos usuários reais.)

questionAnswers(1)

yourAnswerToTheQuestion