Какие МН Библиотеки / Библиотеки SQL Для Автоматической генерации JSON Вы Рекомендуете? [закрытый]

Вам нужно решить, что именно вы пытаетесь сделать первым.


Если вы хотите иметь структуру с указателем на [независимый] массив внутри, вы должны объявить это как

struct my_struct { 
  int n; 
  char *s;
}; 

В этом случае вы можете создать фактический объект структуры любым способом (например, как автоматическая переменная)

struct my_struct ms;

, а затем выделить память для массива независимо

ms.s = malloc(50 * sizeof *ms.s);  

На самом деле нет общей необходимости динамически распределять память массива

struct my_struct ms;
char s[50];

ms.s = s;

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

Обратите внимание, что в этом случае у вас есть два независимых блока памяти: структура и массив.


Совершенно другой подход заключается в использовании идиомы «struct hack». В этом случае массив становится неотъемлемой частью структуры. Оба находятся в одном блоке памяти. В C99 структура будет объявлена ​​как

struct my_struct { 
  int n; 
  char s[];
}; 

и для создания объекта, который вам нужно будет динамически выделять все это

struct my_struct *ms = malloc(sizeof *ms + 50 * sizeof *ms->s);

Размер блока памяти в этом case рассчитан для размещения элементов структуры и конечного массива времени выполнения.

Обратите внимание, что в этом случае у вас нет возможности создавать такие объекты структуры, как статические или автоматические объекты. Структуры с гибкими членами массива в конце могут быть динамически распределены только на C.


Ваше предположение о том, что арифметика указателя быстрее, чем массивы, абсолютно неверна. Массивы работают по указателю арифметики по определению, поэтому они в основном одинаковы. Более того, подлинный массив (не распадающийся на указатель), как правило, немного быстрее, чем объект-указатель. Значение указателя должно считываться из памяти, а местоположение массива в памяти «известно» (или «вычислено») из самого массива.

6
задан Ijas Ameenudeen 18 January 2019 в 10:30
поделиться

3 ответа

Интересно, почему Вы не хотите приносить данные Oracle в некоторый код приложения и делать JSON там?

0
ответ дан 12 December 2019 в 03:50
поделиться

@Geoff-

Система, которая работала для 8 + годы, была спроектирована для использования МН / SQL для ПРЕВРАЩЕНИЯ В ТВОРОГ и большей части бизнес-логики. МН / SQL также генерируют 90% уровня представления (HTML/JavaScript), с помощью МН модификации / SQL. Другие 10% являются данными отчета, сделанными с помощью Построителя отчетов Oracle.

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

1
ответ дан 12 December 2019 в 03:50
поделиться

Ай - генерация Вашего интерфейса в МН / SQL. У Вас есть мое сочувствие.

Я никогда не делал ничего как это, но поиск с помощью Google, найденный эта страница (на который также ссылаются от страницы json.org).

0
ответ дан 12 December 2019 в 03:50
поделиться
Другие вопросы по тегам:

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