Преобразование строки в объект JSON
Как вы заставляете JS думать, что строка-это 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..
8 ответов
можно использовать JSON.parse()
для этого.
пример:
var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
у меня была такая же проблема с аналогичной строкой как ваша
{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)
надеюсь, это поможет,
Если у кого есть более элегантный подход, пожалуйста, поделитесь.
var Data=[{"id": "name2", "label": "Quantity"}]
передайте строковую переменную в JSON parse:
Objdata= Json.parse(Data);
JSON.parse()
функция будет делать.
или
Использование Jquery,
var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );
давайте рассмотрим, что у вас есть строка like
пример : "имя:Люси Возраст:21,пол:женский"
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);
`