Как проанализировать JSON, который имеет внутренние слои, используя Javascript? - PullRequest
0 голосов
/ 16 декабря 2010

Я могу оценить простой JSON с помощью JavaScript.

var json = '{"amount":"50","id":"3"}';
var out = eval("{" + json + "}");

Теперь я использую JPA с REST, и в результате запроса в формате JSON будет указано имя таблицы, которая делает JSON, имеющий внутренний JSON, такой простой eval, не будет работать.

{"inventory":{"amount":"50","id":"3"}}

Я искал в Интернете решение, но не могу найти свое дело. Должен ли я просто выполнить манипуляции со строками и извлечь {"amount":"50","id":"3"} часть? Или есть другой способ?

Ответы [ 3 ]

3 голосов
/ 16 декабря 2010

Да, есть другой (лучший) способ!Используйте JSON.parse() для анализа JSON и получения вашего объекта:

var obj = JSON.parse(jsonString);
//then, for example...
var amount = obj.inventory.amount;

Для старых браузеров (например, IE <8) без поддержки <code>JSON, включайте json2.js, так что это все еще работает.

1 голос
/ 16 декабря 2010

Даже это должно работать:

var json = '{"inventory":{"amount":"50","id":"3"}}';
var out = eval("{" + json + "}");

alert(out.inventory.amount);

Но лучше использовать JSON.parse

0 голосов
/ 16 декабря 2010

Анивей, я думаю, что правильный способ выполнения простого eval - заключить строку json в круглые, а не в фигурные скобки ...

var out = eval ("(" + json + ")");

Cf. https://github.com/douglascrockford/JSON-js/blob/master/json.js:

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...