Может ли ответ JSON не иметь «строковых» значений? - PullRequest
1 голос
/ 21 марта 2012

Работая над перенастройкой ExtJS с помощью метаданных JSON, обнаружил, что мне нужно предоставить некоторые функции javascript в рамках повторной настройки столбцов.

Функции не интерпретируются как функции, если они заключены в кавычки, поэтому возможно ли вернуть JSON со значениями без кавычек?

В идеале я бы хотел что-то вроде

{"d":{
    "metaData": {
        "root": "d.data",
        "fields": [{
            "type": "date",
            "name": "Date",
            -->"renderer": formatDate,
            "dateFormat": "c",
            "convert": function (newValue, model) {
                    return Ext.Date.parse(newValue, "MS");<--
                },
            "header": "Date",
            "dataIndex": "Date"
        }, {
            "type": "string",
            "name": "Notes",
            "header": "Notes",
            "dataIndex": "Notes"
        }, {...

Я также работаю с C #, поэтому я бы вернул JSON как Dictionary<string,object>?

1 Ответ

0 голосов
/ 23 марта 2012

Строго говоря, у Джсона не может быть функций.Тем не менее, вы можете сохранить его в виде строки и затем 'eval' -

...
"convert": "function (newValue, model) { return Ext.Date.parse(newValue, 'MS'); }", //As a string
...

Затем вы сделаете это, чтобы выполнить его (предполагая, что строковая функция находится в convert var):

var func = eval('(' + convert +')');
alert( func(3, 5) ); //Just call it as a normal function now.

Надеюсь, это поможет.Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...