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

Как вы заставляете JS думать, что строка - это JSON?

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

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

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

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

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

and closing braces..
 Zer014 июн. 2012 г., 07:34
Хорошо, я исправил это. Идти кjsonlint.com и положи туда свою строку. Если он говорит, что это правильно, то вы можете использовать JSONParse для достижения того же.
 ManseUK11 июн. 2012 г., 10:55
возможный дубликатSafely turning a JSON string into an object
 Felix Kling11 июн. 2012 г., 11:04
Ваш заголовок вводит в заблуждение. Основываясь на содержании вашего вопроса, я бы скорее сказал, что вы хотите преобразовать строку, содержащую JSON, в объект / массив JavaScript.
 Zer012 июн. 2012 г., 13:59
ОК, я решил это. В строке был \ n Теперь осталось только выяснить, как использовать JSON.parse с этим.

Ответы на вопрос(8)

пример :"name:lucy,age:21,gender:female"

function getJsonData(query){
    let arrayOfKeyValues = query.split(',');
    let modifiedArray =  new Array();
    console.log(arrayOfKeyValues);
    for(let i=0;i< arrayOfKeyValues.length;i++){
        let arrayValues = arrayOfKeyValues[i].split(':');
        let arrayString ='"'+arrayValues[0]+'"'+':'+'"'+arrayValues[1]+'"';
        modifiedArray.push(arrayString);
    }
    let jsonDataString = '{'+modifiedArray.toString()+'}';
    let jsonData = JSON.parse(jsonDataString);
    console.log(jsonData);
    console.log(typeof jsonData);
    return jsonData;
}

let query = "name:lucy,age:21,gender:female";
let response = getJsonData(query);
console.log(response);

`

JSON.parse() Функция будет делать.

или же

Используя Jquery,

var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );
Решение Вопроса
var obj = JSON.parse(string);

кудаstring ваша строка JSON.

 Zer011 июн. 2012 г., 11:00
Это не работает. Выдает ошибку & quot; SyntaxError: JSON.parse: неожиданный символ & quot; , В этой строке нет ничего плохого, поскольку, когда я получаю ту же строку через запрос ajax и обрабатываю ее как «JSON», никаких проблем не возникает.
 11 июн. 2012 г., 11:11
пожалуйста опубликуйте свою точную строку JSON
 Zer011 июн. 2012 г., 11:21
Опубликовано. Проверьте основной пост ..
 Zer025 февр. 2014 г., 10:18
В итоге я пошел на jsonlint.com и убедился, что мой Json прав
 Zer011 июн. 2012 г., 11:25
Когда я получаю его через Ajax, он работает так же, как и тогда, обрабатывает ответ как JSON. Так что я думаю, что должен преобразовать это в объект JSON ..
var Data=[{"id": "name2", "label": "Quantity"}]

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

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

JSON.parse() для этого.

Посмотреть документы на MDN

Example:

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
 11 июн. 2012 г., 11:07
@ Zer0: Мы можем ответить только в меру наших знаний. Вы говорите, что у вас есть строка JSON, мы отвечаем соответственно. Кажется, что ваша строка отличается, если вы разместите ее, мы ответим, учитывая это. Если вы задаете вопрос о кодировании, то код / данные незаменимы.
 Zer011 июн. 2012 г., 11:01
Это не работает. Выдает ошибку & quot; SyntaxError: JSON.parse: неожиданный символ & quot; , В этой строке нет ничего плохого, поскольку, когда я получаю ту же строку через запрос ajax и обрабатываю ее как «JSON», никаких проблем не возникает.
 11 июн. 2012 г., 11:02
@ Zer0: Вы должны обновить свой вопрос, как вы пытаетесь его вместе со строкой JSON.

Просто использоватьeval функция.

var myJson = eval(theJsibStr);
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

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

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

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

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

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

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

 29 окт. 2017 г., 13:05
В приведенном выше коде вы создалиmyString неправильно. Это не строка, а неправильно отформатированный JSON. Ваша вторая строка станет избыточной. Вот что должно быть:var myString = '[{"id":1,"field1":"someField"},{"id":2,"field1":"someOtherField"}]'   Я знаю, что это довольно старый пост, но я подумал, что могу добавить некоторую ясность на случай, если кто-нибудь найдет его.
 22 мар. 2018 г., 16:28
Я решил свою проблему, используя$.parseJSON гдеJSON.parse не работал и выкидывал ошибкуJSON.parse is not a function

Ваш ответ на вопрос