Как я могу обращать string JSON в объект в язык сценариев JavaScript?

Если у меня есть переменная string со следующей стоимостью:

var myString = "{'nombre':'juan'}";

Как я могу обращать string в объект JSON в язык сценариев JavaScript?

35
задан 16.09.2019, 18:14
5 ответов

Понимая, что мы пишем хорошо синтаксис JSON, твой string:

var s = '{"nombre":"juan"}';

Уже это JSON!, он не нуждается ни в каком превращении.

Нотация JSON - способ последовательно преобразовывать объект язык сценариев JavaScript внутри string, которым уже ты имеешь JSON.

Заметь: Ты можешь писать это (без переменной s и без простых кавычек: {"nombre":"juan"}) на этой странице: Json Парсер Онлине, чтобы это санкционировать.

Сейчас, если то, что ты хочешь, состоит в том, чтобы обращать это в объект язык сценариев JavaScript.

var o = JSON.parse(s);

и возвращать это JSON:

var json = JSON.stringify(o);

В конце концов поскольку упомяни @ratlab, если твой браузер не выносит объект JSON ты можешь использовать книжный магазин как json2.js или JSON 3

Или использовать этот polyfill MDN прямо в твоем коде:

if (!window.JSON) {
    window.JSON = {
        parse: function(sJSON) { return eval('(' + sJSON + ')'); },
        stringify: (function () {
            var toString = Object.prototype.toString;
            var isArray = Array.isArray || function (a) { return toString.call(a) === '[object Array]'; };
            var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'};
            var escFunc = function (m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); };
            var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g;
            return function stringify(value) {
                if (value == null) {
                    return 'null';
                } else if (typeof value === 'number') {
                    return isFinite(value) ? value.toString() : 'null';
                } else if (typeof value === 'boolean') {
                    return value.toString();
                } else if (typeof value === 'object') {
                    if (typeof value.toJSON === 'function') {
                        return stringify(value.toJSON());
                    } else if (isArray(value)) {
                        var res = '[';
                        for (var i = 0; i < value.length; i++)
                            res += (i ? ', ' : '') + stringify(value[i]);
                        return res + ']';
                    } else if (toString.call(value) === '[object Object]') {
                        var tmp = [];
                        for (var k in value) {
                            if (value.hasOwnProperty(k))
                                tmp.push(stringify(k) + ': ' + stringify(value[k]));
                        }
                        return '{' + tmp.join(', ') + '}';
                    }
                }
                return '"' + value.toString().replace(escRE, escFunc) + '"';
            };
        })()
    };
}

Заметь: Сейчас, когда я исследую немного больше, 3 книжных магазинов раньше упомянутые, json2.js, JSON 3 и pollyfill только я рекомендую JSON 3. Мотив состоит в том, что pollyfill - только один пример кода вероятно без опоры и json2.js несмотря на то, что это первоначальный книжный магазин, это старый книжный магазин, с какими-то ошибками и не совпадает с настоящим стандартом. Больше информации в секции Changes from JSON 2 из документации JSON 3

26
ответ дан 03.12.2019, 23:17

Суммировать в ответ @dabbbb.

, что браузеры как:

  • ie8 вперед. У
  • Firefox
  • Chrome

есть родная опора для JSON, в случае, если ты будешь нуждаться в том, чтобы сделать это в более старых браузерах ты будешь нуждаться включения JSON2

6
ответ дан 03.12.2019, 23:17

Принимая во внимание твой код инициализации:

var myString = "{'nombre':'juan'}";

Решение

Использование внутренне присущих программных средств языка: JSON.parse ()

var objeto = JSON.parse(myString);

Документация MDN говорит нам, что:

JSON.parse (text [reviver]): Метод JSON.parse () анализирует цепь текста как JSON, преобразовывая необязательно стоимость, произведенную анализом.


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

Возможно устанавливать это на странице: JSON in язык сценариев JavaScript.

var myJSONObject... To convert в JSON text into an object...

5
ответ дан 03.12.2019, 23:17

В языке сценариев JavaScript существуют 2 метода, чтобы конвертировать string с нотацией JSON объект и наоборот JSON.parse и JSON.stringify:

var obj1 = 'null';
var obj2 = '1';
var obj3 = '"string"';
var obj4 = '[1,2,3]';
var obj5 = '{"double_quote": "any object"}'

console.log(JSON.parse(obj1)); => null
console.log(JSON.parse(obj2)); => 1
console.log(JSON.parse(obj3)); => "string"
console.log(JSON.parse(obj4)); => [1,2,3]
console.log(JSON.parse(obj5)); => {"double_quote": "any object"}

console.log(JSON.stringify(obj3)) => "\"string\""

Ты должен иметь в виду, что null, true, false также это стоимость действительные JSON, и что цепи символов должны включать двойную кавычку сначала и в конце цепи, чтобы считаться как таковым, другой формы попробует интерпретировать их другим типом данных. Регулярные выражения и функции это не, так как JSON - формат подкачки данных, и последние считались "кодом".

Ты можешь находить полную спецификацию формата здесь и также на самой странице json.org

Эти функции вынесены в большинстве браузеров Chrome, Firefox 3.5 +, Internet Explorer 8 +, Произведи 10.5 + и Safari 4.0 +.

Присутствующим не является, могут использовать книжный магазин JSON2, сделанный тем же Дугласом Крокфордом создатель этого формата основываясь в структурах язык сценариев JavaScript существующие.

5
ответ дан 03.12.2019, 23:17

Javascript считай с mГ©todos, чтобы конвертировать string JSON и наоборот.

var a = '{"nombre":"juan"}';
var b = JSON.parse(a); // devuelve el string como JSON
JSON.stringify(b); // devuelve el JSON en string
5
ответ дан 03.12.2019, 23:17
  • 1
    Этот ответ плохой: JSON.parse() не возвращает цепь JSON а объект язык сценариев JavaScript. Также JSON.stringify() не берет цепь JSON а объект язык сценариев JavaScript и возвращает цепь JSON – Carlos Muñoz 23.12.2015, 15:48
  • 2
    Не надо быть очень готовым догадываться, что, когда я имею в виду JSON, я говорю об объекте js. Я понимаю, что tú поскольку соискатель в pseudo-sherif SO ты захотел остаться первым и дискредитировать demá s, но мой ответ полностью vá lida, для которого спрашивал автор и любой, который запрограммировал бы немного má s, что tú пойми и он подает ему мой ответ. – Dabbbb. 17.09.2018, 00:13