Лучший способ закодировать кортежи json

При реализации табличного представления вы реализуете различные методы UITableViewDataSourceUITableViewDelegate) для заполнения табличного представления. Обычно методы источника данных основывают свои ответы на некоторой имеющейся у вас структуре данных.

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

Если табличное представление может быть отсортировано и / или отфильтровано, или если его можно искать, то вы хотите отдельный массив из ваших исходных данных. Вы строите новый массив из исходных данных, основываясь на том, как данные должны быть отсортированы и / или отфильтрованы. Это сохраняет исходные данные нетронутыми и позволяет методам источника данных получать доступ только к тем данным, которые необходимо отобразить.

38
задан f4hy 3 April 2009 в 20:14
поделиться

5 ответов

Вы могли бы рассмотреть высказывание

{"[1,2]": [(2,3),(1,7)]}

и затем когда необходимо вывести значение, можно просто проанализировать сами ключи, поскольку JSON возражает, который все современные браузеры могут сделать со встроенным JSON.parse метод (я использую jQuery.each для итерации здесь, но Вы могли использовать что-либо):

var myjson = JSON.parse('{"[1,2]": [[2,3],[1,7]]}');
$.each(myjson, function(keystr,val){
    var key = JSON.parse(keystr);
    // do something with key and val
});

С другой стороны, Вы могли бы хотеть, просто структурируют Ваш объект по-другому, например.

{1: {2: [(2,3),(1,7)]}}

так, чтобы вместо высказывания

myjson[1,2] // doesn't work

который является недопустимым синтаксисом JavaScript, Вы могли сказать

myjson[1][2] // returns [[2,3],[1,7]]
23
ответ дан Eli Courtwright 27 November 2019 в 03:53
поделиться

Если Ваши ключевые кортежи являются действительно целочисленными парами, то самое легкое и вероятно большая часть простого подхода состояла бы в том, как Вы предполагаете.... кодируют их к строке. Можно сделать это в остроте:

>>> simplejson.dumps(dict([("%d,%d" % k, v) for k, v in d.items()]))
'{"1,2": [[2, 3], [1, 7]]}'

Это получило бы Вас структура данных JavaScript, ключи которой Вы могли затем разделить для возвращения точек снова:

'1,2'.split(',')
8
ответ дан nosklo 27 November 2019 в 03:53
поделиться

Моя рекомендация была бы:

{ "1": [
        { "2": [[2,3],[1,7]] }
       ]
}

Это все еще анализирует, но в зависимости от того, как Вы используете его, это может быть легче в этой форме.

3
ответ дан David Berger 27 November 2019 в 03:53
поделиться

Вы не можете использовать массив в качестве ключа в JSON. Лучшее, которое можно сделать, кодируют его. Извините, но нет действительно никакого другого нормального способа сделать это.

2
ответ дан Keith Gaughan 27 November 2019 в 03:53
поделиться

Это могла просто быть двумерная матрица? Затем можно использовать целые числа в качестве ключей

1
ответ дан David Snabel-Caunt 27 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

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