Загрузка json как переменной в Treemap d3.js [дубликат]

Ни один из этих ответов не работал для меня.

Это то, что сработало для меня.

with score as (select max(score_up) from history)
select history.* from score, history where history.score_up = score.max
1138
задан OJFord 11 July 2015 в 12:52
поделиться

24 ответа

1721
ответ дан Graham 5 September 2018 в 11:36
поделиться

Если вы используете jQuery , вы также можете просто сделать $.getJSON(url, function(data) { });

. Тогда вы можете делать такие вещи, как data.key1.something, data.key1.something_else и т. д.

11
ответ дан Aliaksandr Sushkevich 5 September 2018 в 11:36
поделиться
5
ответ дан Bharath Kumaar 5 September 2018 в 11:36
поделиться

Если ваш JavaScript находится в Mootools , JSON.parse будет анонимным с помощью Framework. Допустимый синтаксис для безопасного превращения строки JSON в объект должен быть:

var object = JSON.decode(string[, secure]);

Кроме того, JSON Request может поднять объект, способный самостоятельно анализировать. Вы можете cek, как это сделать json raw data здесь:

http://jsfiddle.net/chetabahana/qbx9b5pm/

-1
ответ дан Chetabahana 5 September 2018 в 11:36
поделиться

Более старый вопрос, я знаю, однако никто не замечает этого решения, используя new Function(), анонимную функцию, которая возвращает данные.


Просто пример:

 var oData = 'test1:"This is my object",test2:"This is my object"';

 if( typeof oData !== 'object' )
  try {
   oData = (new Function('return {'+oData+'};'))();
  }
  catch(e) { oData=false; }

 if( typeof oData !== 'object' )
  { alert( 'Error in code' ); }
 else {
        alert( oData.test1 );
        alert( oData.test2 );
      }

Это немного более безопасно, потому что он выполняет внутри функции и не компилируется в вашем коде напрямую. Поэтому, если внутри него есть объявление функции, оно не будет привязано к объекту окна по умолчанию.

Я использую это для «компиляции» параметров конфигурации элементов DOM (например, атрибута данных) простым и быстрым.

0
ответ дан Codebeat 5 September 2018 в 11:36
поделиться

Используйте простой код, представленный в следующей ссылке на MSDN .

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);

и reverse

var str = JSON.stringify(arr);
61
ответ дан Daniel 5 September 2018 в 11:36
поделиться

Я нашел «лучший» способ:

В CoffeeScript:

try data = JSON.parse(jqxhr.responseText)
data ||= { message: 'Server error, please retry' }

В Javascript:

var data;

try {
  data = JSON.parse(jqxhr.responseText);
} catch (_error) {}

data || (data = {
  message: 'Server error, please retry'
});
15
ответ дан Dorian 5 September 2018 в 11:36
поделиться

Вы также можете использовать функцию reviver для фильтрации.

var data = JSON.parse(jsonString, function reviver(key, value) {
   //your code here to filter
});

для получения дополнительной информации см. JSON.parse

0
ответ дан Durgpal Singh 5 September 2018 в 11:36
поделиться

Если вы хотите, чтобы этот метод можно было использовать таким образом. Вот объект Data, который вы хотите использовать ex: Data = '{result: true, count: 1}'

try {
  eval('var obj=' + Data);
  console.log(obj.count);
}
catch(e) {
  console.log(e.message);
}

Этот метод действительно помогает в Nodejs Если вы работаете с программированием последовательного порта

8
ответ дан ewwink 5 September 2018 в 11:36
поделиться
0
ответ дан FullStack 5 September 2018 в 11:36
поделиться
$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

Обратный вызов передается возвращенными данными, которые будут объектом или массивом JavaScript, как определено структурой JSON, и анализируются с использованием метода $.parseJSON().

10
ответ дан hexacyanide 5 September 2018 в 11:36
поделиться
6
ответ дан Jorgesys 5 September 2018 в 11:36
поделиться

Просто для удовольствия, вот как использовать функцию:

 jsonObject = (new Function('return ' + jsonFormatData))()
9
ответ дан lessisawesome 5 September 2018 в 11:36
поделиться
18
ответ дан Mark Biek 5 September 2018 в 11:36
поделиться

JSON.parse () преобразует любую строку JSON, переданную в функцию, в объект JSON.

Для лучшего понимания нажмите F12, чтобы открыть элемент Inspect Element своего браузера и перейти к консоли, чтобы написать следующие команды: -

var response = '{"result":true,"count":1}'; //sample json object(string form)
JSON.parse(response); //converts passed string to JSON Object.

Теперь запустите команду: -

console.log(JSON.parse(response));

вы получите вывод как Object {result: true, count: 1}.

Чтобы использовать этот объект, вы можете назначить его переменной, скажем, obj: -

var obj = JSON.parse(response);

Теперь, используя оператор obj и dot (.), Вы можете получить доступ к свойствам объекта JSON.

Попробуйте запустить команду

console.log(obj.result);
1
ответ дан Pushkar Kathuria 5 September 2018 в 11:36
поделиться

Метод jQuery теперь устарел. Вместо этого используйте этот метод:

let jsonObject = JSON.parse(jsonString);

Оригинальный ответ с использованием устаревшей функции jQuery :

Если вы используете jQuery, просто используйте:

jQuery.parseJSON( jsonString );

Это именно то, что вы ищете (см. документацию jQuery ).

858
ответ дан Quentin 5 September 2018 в 11:36
поделиться

Официально документировано:

Метод JSON.parse() анализирует строку JSON, создавая значение или объект JavaScript, описанные в строке. Опция reviver может быть предоставлена ​​для выполнения преобразования на результирующем объекте до его возвращения.

Синтаксис

JSON.parse(text[, reviver])

Параметры

текст

Строка для синтаксического анализа как JSON. См. Объект JSON для описания синтаксиса JSON.

reviver (необязательно)

Если функция, это предписывает, как значение, первоначально созданное путем синтаксического анализа, преобразуется перед возвратом.

Возвращаемое значение

Объект, соответствующий данному тексту JSON.

Исключения

Выдает исключение SyntaxError, если строка для разбора не является действительный JSON.

1
ответ дан Salomon Zhang 5 September 2018 в 11:36
поделиться
1
ответ дан Sebyddd 5 September 2018 в 11:36
поделиться
JSON.parse(jsonString);

json.parse изменится на объект.

1
ответ дан Shekhar Tyagi 5 September 2018 в 11:36
поделиться

Попробуйте это. Этот текст написан в машинописном тексте.

         export function safeJsonParse(str: string) {
               try {
                 return JSON.parse(str);
                   } catch (e) {
                 return str;
                 }
           }
0
ответ дан Supun Dharmarathne 5 September 2018 в 11:36
поделиться

Разбор JSON - это всегда боль в заднице. Если вход не соответствует ожиданиям, он выдает ошибку и выдает сбой, что вы делаете. Вы можете использовать следующую крошечную функцию для безопасного анализа ввода. Он всегда превращает объект, даже если вход недействителен или уже является объектом, который лучше для большинства случаев.

JSON.safeParse = function (input, def) {
  // Convert null to empty object
  if (!input) {
    return def || {};
  } else if (Object.prototype.toString.call(input) === '[object Object]') {
    return input;
  }
  try {
    return JSON.parse(input);
  } catch (e) {
    return def || {};
  }
};
1
ответ дан Tahsin Turkoz 5 September 2018 в 11:36
поделиться

Я уже давно использовал json_sans_eval . Согласно его автору, он более безопасен, чем json2.js.

5
ответ дан teleclimber 5 September 2018 в 11:36
поделиться

Резюме:

Javascript (как браузер, так и NodeJS) имеют встроенный объект JSON. На этом объекте есть два удобных метода для работы с JSON. Они следующие:

  1. JSON.parse() Принимает JSON в качестве аргумента, возвращает объект JS
  2. JSON.stringify() Принимает объект JS в качестве аргумента возвращает объект JSON

Другие приложения:

Кроме того, для очень удобного использования JSON они могут использоваться для других средств. Комбинация обоих методов JSON позволяет нам очень легко сделать глубокие клоны массивов или объектов. Например:

let arr1 = [1, 2, [3 ,4]];
let newArr = arr1.slice();

arr1[2][0] = 'changed'; 
console.log(newArr); // not a deep clone

let arr2 = [1, 2, [3 ,4]];
let newArrDeepclone = JSON.parse(JSON.stringify(arr2));

arr2[2][0] = 'changed'; 
console.log(newArrDeepclone); // A deep clone, values unchanged

0
ответ дан Willem van der Veen 5 September 2018 в 11:36
поделиться

Изменить: этот ответ для IE & lt; 7, для современных браузеров проверьте ответ Джонатана выше.

Редактирование: этот ответ устарел и Ответ Джонатана выше (JSON.parse(jsonString)) теперь лучший ответ.

JSON.org имеет парсер JSON для многих языков, включая 4 разных для Javascript. Я считаю, что большинство людей рассмотрят json2.js свою реализацию goto.

139
ответ дан yodebu 5 September 2018 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: