уроки - Разбор JSON в JavaScript?



преобразовать json в массив javascript (11)

JSON.parse () преобразует любую строку JSON, переданную в функцию, в объект JSON.

Для лучшего понимания нажмите F12, чтобы открыть элемент «Проверка» вашего браузера, и перейдите на консоль, чтобы написать следующие команды:

var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.

Теперь запустите команду:

console.log(JSON.parse(response));

Вы получите результат как Object {result: true, count: 1}.

Чтобы использовать этот объект, вы можете назначить его переменной, скажем, obj :

var obj = JSON.parse(response);

Теперь, используя obj и оператор dot (.), Вы можете получить доступ к свойствам объекта JSON.

Попробуйте запустить команду

console.log(obj.result);

На этот вопрос уже есть ответ:

Я хочу проанализировать строку JSON в JavaScript. Ответ - это что-то вроде

var response = '{"result":true,"count":1}';

Как я могу получить result и count из этого?


Answer #1

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

например...

var response = '{"result":true , "count":1}';

var parsedJSON = eval('('+response+')');

var result=parsedJSON.result;
var count=parsedJSON.count;

alert('result:'+result+' count:'+count);

Answer #2

В следующем примере будет ясно:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = JSON.parse(jsontext);
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

ИЛИ ЖЕ

Вы также можете использовать функцию eval . В следующем примере используется функция eval :

var jsontext   = '{"name":"x","age":"11"}';
var getContact = eval('(' + jsontext + ')');
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

Поскольку функция JSON.parse более безопасна и выполняется быстрее, чем функция eval, я рекомендую вам использовать функцию JSON.parse .


Answer #3

Вы можете использовать функцию eval, как в некоторых других ответах. (Не забудьте дополнительные скобки.) Вы узнаете, почему, когда вы копаете глубже) или просто используйте функцию jQuery parseJSON :

var response = '{"result":true , "count":1}'; 
var parsedJSON = $.parseJSON(response);

ИЛИ ЖЕ

Вы можете использовать этот ниже код.

var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);

И вы можете получить доступ к полям, используя jsonObject.result и jsonObject.count .


Answer #4

Если вы используете jQuery, это просто:

var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1

Answer #5

Если вы передаете строчную переменную (правильно сформированную строку JSON) в JSON.parse из MVC @Viewbag, которая имеет двойную кавычку, '' ', в качестве кавычек, вам необходимо обработать ее перед JSON.parse ( jsonstring )

    var jsonstring = '@ViewBag.jsonstring';
    jsonstring = jsonstring.replace(/"/g, '"');  

Answer #6

Если вы хотите использовать JSON 3 для старых браузеров, вы можете загрузить его условно:

<script>
    window.JSON || 
    document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>

Теперь стандартный объект window.JSON доступен вам независимо от того, в каком браузере работает клиент.


Answer #7

Если хочешь

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);

вы можете получить доступ к элементам JSON JsonObject с помощью (.) точки:

JsonObject.result;
JsonObject.count;

Answer #8

Легкий способ сделать это:

var data = '{"result":true,"count":1}';
var json = eval("[" +data+ "]")[0]; // ;)

Answer #9

Прежде всего, вы должны убедиться, что код JSON действителен.

После этого я бы рекомендовал использовать библиотеку JavaScript, такую ​​как jQuery или Prototype, если это возможно, потому что эти вещи хорошо обрабатываются в этих библиотеках.

С другой стороны, если вы не хотите использовать библиотеку, и вы можете поручиться за действительность объекта JSON, я бы просто обернул строку анонимной функцией и использовал функцию eval.

Это не рекомендуется, если вы получаете объект JSON из другого источника, который не является абсолютно надежным, потому что функция eval позволяет использовать ренегатный код, если вы это сделаете.

Вот пример использования функции eval:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

Если вы контролируете, какой браузер используется, или вас не беспокоят люди со старым браузером, вы всегда можете использовать метод JSON.parse.

Это действительно идеальное решение для будущего.


Answer #10

Я думал, что JSON.parse(myObject) будет работать. Но в зависимости от браузеров, возможно, стоит использовать eval('('+myObject+')') . Единственная проблема, которую я могу порекомендовать, - это многоуровневый список в JSON.





parsing