Когда предпочесть JSON XML

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

На мой взгляд, у вас есть два варианта. Добавьте ключ к каждой таблице, а затем используйте поиск в SSRS. Примечание: вы не можете использовать RowNumber () в вычисляемом столбце или в функции LOOKUP в SSRS, поэтому ключи необходимо указывать непосредственно в запросе к набору данных.

Второй, и, возможно, более простой вариант, это сделать это на стороне сервера и использовать один набор данных. Я не MySQL человек, но я думаю, что следующее должно работать нормально на MySQL 8.0 или выше.

CREATE TABLE Table1(Age int, LowerRange int, UpperRange int, Median int);
INSERT INTO Table1(Age, LowerRange, UpperRange, Median) VALUES
(6,100, 120, 1),
(8,200, 400, 4),
(10,300, 700, 7),
(12,400, 1100, 1),
(14,500, 4000, 4),
(16,600, 7000, 7),
(18,700, 11000, 1),
(20,800, 40000, 4),
(22,900, 70000, 7);

CREATE TABLE Table2(Age int, Value int);
INSERT INTO Table2(Age, Value) VALUES
(8, 150),
(9, 270),
(14, 530),
(22, 980);

SELECT 
        * 
    FROM 
        (SELECT *, ROW_NUMBER() OVER(ORDER BY Age) rn FROM Table1) x
        LEFT JOIN 
        (SELECT *, ROW_NUMBER() OVER(ORDER BY Age) rn FROM Table2) y
            ON x.rn = y.rn

Это вернет точные результаты, которые вы показали в вашем примере (плюс номера строк, которые вы, очевидно, можете исключить, если хотите)

Вот скрипка для вышеприведенных демонстраций.

https://www.db-fiddle.com/f/bMVF9Co46dhAip5GHuofAw/0

146
задан 04.10.2019, 16:55

10 ответов

Одобрите XML по JSON, когда любой из них будет верен:

  • Вы должны передать проверку
  • , Вы используете XSLT
  • , Ваши сообщения включают много отмеченного текста
  • , необходимо взаимодействовать со средами, которые не поддерживают Пользу JSON

JSON по XML, когда все они верны:

  • сообщения не должны быть проверены, или проверка их десериализации проста
  • , Вы не преобразовываете сообщения или преобразовываете их десериализацию, прост
  • , Ваши сообщения являются главным образом данными, не отмеченным текстом
  • , обменивающиеся сообщениями конечные точки имеют хорошие инструменты JSON
149
ответ дан 04.10.2019, 17:04
  • 1
    JSON doesn' t предлагают любое преимущество перед XML в обработке отмеченного текста. Но я вижу Вашу точку; that' s, возможно, завышенный. – Robert Rossney 04.10.2019, 17:04
  • 2
    Когда все условия равны, способствуют JSON по двум причинам: JSON намного легче для парсинга, чем XML (дружественный ЦП) и требует, чтобы партия меньше данных была передана (Сетевая товарищеская встреча). – Roger Barreto 04.10.2019, 17:05
  • 3
    Почему don' t Вы хотите отмеченный текст в json данных? – bobobobo 04.10.2019, 17:06

Я выбрал бы XML over JSON, если я должен проверить блок входящих данных, потому что XML nativly поддерживает это через XSD.

6
ответ дан 04.10.2019, 16:56
  • 1
    Не определяя нежелательные атрибуты - that' s положительная сторона. – B Seven 05.02.2020, 10:46

Я использую JSON, если я не обязан использовать XML. Более просто понять, и (потому что требуется меньше конфигурации наверху), для чтения и записи легче к программе, если библиотеки доступны в Вашем контексте, и они довольно повсеместны теперь.

, Когда Amazon сначала представил их каталоги как веб-сервис, они предложили и JSON и XML. Что-то как 90% лиц, осуществляющих внедрение выбрало JSON.

81
ответ дан 04.10.2019, 16:56
  • 1
    " я использую JSON если I' m требуемый использовать XML." ~ Точно. – EndangeredMassa 04.10.2019, 16:57
  • 2
    Таким образом, более глубоким вопросом является " Поскольку, какие причины Вы были бы обязаны использовать XML? " те глупые причины; или они просто отражают различные проблемы с различной точки зрения от Вашего? – 13ren 04.10.2019, 16:57
  • 3
    Несколько возможных причин, включая существующее программное обеспечение I don' t хотят переписать. Но самое важное использует XML в качестве формата обмена данными где я don' t управляют обоими концами, или существует формальный стандарт, который применяет и требует XML. Я могу только выбрать произвольно когда I' m единственный разработчик включен. – dkretz 04.10.2019, 16:58

Рассмотрение Вашего конкретного случая, где Вы уже делаете JavaScript на стороне клиента, я пошел бы с JSON по этим причинам:

  • , Так как JSON является собственным к JavaScript, который необходимо было бы записать меньшему количеству кода стороны клиента - Всего eval() (или, еще лучше, JSON.parse()), JSON представляют в виде строки и получают объект, который можно использовать.

  • В то же время оценка JSON на клиентском будет более эффективным, и поэтому быстрее.

  • сериализация JSON производит более короткие строки, чем XML. Используя JSON уменьшит объем данных, натыкающийся на провод, и улучшит производительность в этом отношении.

Вот некоторые дополнительные материалы для чтения: http://www.subbu.org/blog/2006/08/json-vs-xml

15
ответ дан 04.10.2019, 16:56
  • 1
    isn' луг t eval() JSON большое нет - нет? – shoosh 04.10.2019, 16:57
  • 2
    @Shy, JSON' s собственный сайт говорит, что можно использовать оценку на JSON (с перенесенными круглыми скобками): json.org/js.html – strager 04.10.2019, 16:57
  • 3
    Взятый с json.org: функция оценки очень быстра. Однако это может скомпилировать и выполнить любую программу JavaScript, таким образом, могут быть проблемы безопасности. Использование оценки обозначается, когда источнику доверяют и компетентен. Намного более безопасно использовать синтаксический анализатор JSON – sarego 04.10.2019, 16:58
  • 4
    Предпочтите JSON.parse () к оценке (). – Havvy 04.10.2019, 16:58
  • 5
    Позиционные параметры могут быть неприятностью по многим причинам - трудный осуществить рефакторинг - и слишком легкий для несоответствия передаваемым переменным. – Ross Attrill 05.02.2020, 10:44

Некоторые другие вещи, с которыми я столкнулся в XML по сравнению с областью JSON:

JSON очень хорош для

  • пары имя/значение
  • вложение те пары

, Что означает, что это имеет тенденцию любить массив или вложенный массив. Однако JSON отсутствует оба

  • атрибуты
  • пространство имен

Поэтому, если бы необходимо было объединить два или больше сервиса JSON то могли бы быть потенциальные конфликты пространства имен. Так как тот упомянутая JSON, может использоваться приблизительно для 90% того же самого, для которого может использоваться XML при обмене данными, по моему опыту.

13
ответ дан 04.10.2019, 16:57
  • 1
    Другая проблема Json - то, что Вы не можете объединить два сообщения json легко для создания нового сообщения json. Это обычно won' t быть правильно построенным.. – vtd-xml-author 04.10.2019, 16:57
  • 2
    Для чего Вы нуждались бы в атрибутах? Если Ваш элемент содержит другие значения, сделайте его объектом - участники являются Вашим " attributes". откровенно говоря, я думаю bifurcal структура атрибутов/контейнера совершенно вредного XML. – foo 04.10.2019, 16:57
  • 3
    +1 - Я не вижу потребности в атрибутах в JSON. – John Clements 04.10.2019, 16:58

Обычно JSON более компактен, и быстрее проанализировать.

Предпочитают XML если:

  • необходимо обработать данные на клиенте, и можно усилить XSL для этого. Возможности являются XML +, цепочка XSL будет работать быстрее, чем JSON + JavaScript специально для больших блоков данных.
    • Один хороший случай должен преобразовать данные в отрывок HTML.
  • Различные случаи прежней версии:
    • существует существующий сервис XML, и это - стычка для перезаписи его с JSON по некоторым причинам.
    • необходимо отправить эти данные назад как XML после некоторой легкой обработки с помощью входа пользователя.

Один важный случай (почти) XML: попытайтесь обнаружить, когда отправка отрывков HTML будет более выгодной, чем отправка необработанных данных. AHAH может сделать чудеса в простых приложениях, все же часто пропускаемых. Обычно этот стиль предполагает, что сервер отправляет отрывки HTML, которые будут встроены в веб-странице без обработки.

Обычно в CSS случаев AHAH усиливается к макс. для массирования отрывков визуально и реализации простых условных выражений как сокрытие/показ соответствующих частей отрывка с помощью определенных для пользователя или специализированных настроек.

11
ответ дан 04.10.2019, 16:57
  • 1
    Мне нравится это также, но это походит на it' s только полезный в классах, где все переменные экземпляра имеют методы set. – Zach Kemp 05.02.2020, 10:43

JSON легок и быстрее для парсинга. XML немного более трудно проанализировать и является медленнее, чтобы проанализировать и передать (в большинстве случаев).

, Так как Вы используете jQuery, я предлагаю использовать JSON: jQuery может получить данные JSON и преобразовать, это в JavaScript возражает автоматически. На самом деле Вы можете преобразовывать данные JSON в объект JavaScript использование оценки . XML должен был бы быть транссведущим вручную Вами (я не знаю, как это работает в JavaScript, но это - трудное/больше раздражение на большинстве языков, я пользовался библиотеками XML с).

8
ответ дан 04.10.2019, 16:58
  • 1
    JSON является по определению объектом JavaScript, jQuery isn' t действительно делающий что-либо специальный " converting". просто мысль Это должно быть разъяснено. – Brian Gianforcaro 04.10.2019, 16:59
  • 2
    JSON не является объектом JavaScript если it' s инстанцированный в JavaScript. Это, оказывается, следует за форматом, используемым для сериализации объектов JavaScript, но it' s доступный (с надлежащими дополнениями и созданный-ins) с большинства языков, по крайней мере, так же легко, как XML. – dkretz 04.10.2019, 16:59
  • 3
    @Gianforcaro, я понимаю это. I' ll редактируют мое сообщение для утверждения этого более ясно. @doofledorfer, сказал я " и преобразуйте его в объект " JavaScript; я didn' t говорят, что данные JSON были объектом JavaScript. – strager 04.10.2019, 17:00
  • 4
    Я отвечал Brian. – dkretz 04.10.2019, 17:00
  • 5
    А-ч, извините, didn' t выгода это. – strager 04.10.2019, 17:00
  • 6
    lol, didn' t даже понимают I' d ответил в этом потоке. Так или иначе, я почти всегда доступ через методы set/методов get. Если Вы don' t хотят, чтобы они изменились, затем объявили их как частных ( пример ), Но действительно, код инициализатора как это должен только использоваться на структурах данных, таким образом, эта проблема shouldn' t подходят на практике. – Joshua Cheek 05.02.2020, 10:46

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

XML, анализирующий всегда, использует партию ресурсов браузера и должен избежаться так, как мы можем, если иначе не требуется.

8
ответ дан 04.10.2019, 16:59
  • 1
    @Joshua: That' s совершенно допустимый. Я соглашаюсь, что Ваш метод вообще предпочтителен, однако, я don' t всегда обеспечивают методы set для всех переменных экземпляра (например, когда они shouldn' t изменение после объектной инициализации). – Zach Kemp 05.02.2020, 10:46

JSON является собственным кодированием для JavaScript. Это должно быть намного быстрее и легче работать с.

2
ответ дан 04.10.2019, 16:59

Я использую JSON для любого вида конфигурации, обмена данными или обмена сообщениями. Я использую XML, только если я имею к по другим причинам или семантически повысить подобные документу данные.

1
ответ дан 04.10.2019, 17:00
  • 1
    +1 для хорошего примера и никакого HTML – alexvetter 19.02.2020, 05:25

Теги

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