Преобразование строки в объект JSON

111

Как вы думаете, что JSON является JSON?

У меня есть функция, которая работает только при передаче объекта JSON. Если я передам ему строку, в том же формате, что и JSON, это не сработает. Поэтому я хочу, чтобы эта функция считала, что строка, переданная ей, является JSON. Строка действительно находится в формате JSON.

Я также пробовал следующее. Я ввел строку через Ajax, с параметром "handle as" как "JSON", а затем, когда я передал результат функции, она работает.

Итак, я понял, что проблема связана не с строкой. Как преобразовать эту строку в JSON? Если я получаю такую ​​же строку через ajax-запрос, а затем передаю ее функции, тогда как прямое ее прохождение не работает.

Строка выглядит следующим образом:

  {
     "data": [
   {
  "id": "id1",
      "fields": [
        {
          "id": "name1",
          "label": "joker",
          "unit": "year"
        },
         {"id": "name2", "label": "Quantity"},
    ],
      "rows": [    data here....

and closing braces..
  • 1
    возможный дубликат Безопасного превращения строки JSON в объект
  • 2
    Ваш заголовок вводит в заблуждение. Основываясь на содержании вашего вопроса, я бы сказал, что вы хотите преобразовать строку, содержащую JSON, в объект / массив JavaScript.
Показать ещё 2 комментария
Теги:

7 ответов

271
Лучший ответ
var obj = JSON.parse(string);

Где string - ваша строка json.

  • 0
    Это не работает. Выдает ошибку «SyntaxError: JSON.parse: неожиданный символ». В строке нет ничего плохого, так как когда я получаю ту же строку через запрос ajax и обрабатываю ее как «JSON», никаких проблем не возникает.
  • 0
    пожалуйста опубликуйте свою точную строку JSON
Показать ещё 6 комментариев
23

Вы можете использовать JSON.parse() для этого.

См. документы в MDN

Пример:

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
  • 1
    Это не работает. Выдает ошибку «SyntaxError: JSON.parse: неожиданный символ». В строке нет ничего плохого, так как когда я получаю ту же строку через запрос ajax и обрабатываю ее как «JSON», никаких проблем не возникает.
  • 2
    @ Zer0: Вы должны обновить свой вопрос, указав, как вы пробуете его вместе со строкой json.
Показать ещё 1 комментарий
6

У меня была такая же проблема с подобной строкой, как у вас

{id:1,field1:"someField"},{id:2,field1:"someOtherField"}

Проблема заключается в том, что структура строки json parser не распознает, что в этом случае ему необходимо создать 2 объекта. так что я сделал это глупо, я просто структурировал свою строку и добавил [] с этим распознанным парсером

var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)

Надеюсь, что это поможет,

Если у кого-то есть более элегантный подход, поделитесь им.

  • 0
    В приведенном выше коде вы неправильно сконструировали myString . Это не строка и неправильно отформатированный JSON. Ваша вторая строка станет избыточной. Вот что должно быть: var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]' Я знаю, что это довольно старый пост, но я подумал добавить немного ясности на случай, если кто-нибудь найдет его.
  • 0
    Я решил свою проблему, используя $.parseJSON где JSON.parse не работал и JSON.parse is not a function ошибку. JSON.parse is not a function
6
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

ссылка: -

http://api.jquery.com/jQuery.parseJSON/

2
var Data=[{"id": "name2", "label": "Quantity"}]

Передайте строковую переменную в Json parse:

Objdata= Json.parse(Data);
  • 0
    В вашем примере, Data уже является объектом, поэтому нет необходимости анализировать его. Вам понадобятся некоторые кавычки, окружающие все ваши данные, чтобы сделать их строкой.
0

Просто используйте функцию eval.

var myJson = eval(theJsibStr);
  • 0
    Eval это зло, будьте очень осторожны с безопасностью с этим подходом
0

JSON.parse() будет делать.

или

Использование JQuery,

var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню