Как вы думаете, что 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..
var obj = JSON.parse(string);
Где string
- ваша строка json.
Вы можете использовать JSON.parse()
для этого.
Пример:
var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
У меня была такая же проблема с подобной строкой, как у вас
{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)
Надеюсь, что это поможет,
Если у кого-то есть более элегантный подход, поделитесь им.
myString
. Это не строка и неправильно отформатированный JSON. Ваша вторая строка станет избыточной. Вот что должно быть: var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]'
Я знаю, что это довольно старый пост, но я подумал добавить немного ясности на случай, если кто-нибудь найдет его.
$.parseJSON
где JSON.parse
не работал и JSON.parse is not a function
ошибку. JSON.parse is not a function
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
ссылка: -
var Data=[{"id": "name2", "label": "Quantity"}]
Передайте строковую переменную в Json parse:
Objdata= Json.parse(Data);
Data
уже является объектом, поэтому нет необходимости анализировать его. Вам понадобятся некоторые кавычки, окружающие все ваши данные, чтобы сделать их строкой.
Просто используйте функцию eval
.
var myJson = eval(theJsibStr);
JSON.parse()
будет делать.
или
Использование JQuery,
var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );