Аннотировать свойство с помощью @Column
и определить тип, который будет ArrayList
, а не только List
. И сделайте Person
реализовать Serializable
.
Но вы должны сделать это, только если ваши мотивы очень ясны, потому что это правильное решение в некоторых очень редких случаях. Как заметил Паскаль, если вам когда-либо придется менять Person
, у вас будут головные боли.
Используйте массив вместо объекта (квадратные скобки).
var example = [ {/* stuff1 */}, { /* stuff2 */}, { /* stuff3 */}];
var fist = example[0];
Обратите внимание, что вы теряете идентификаторы 'foo'. Но вы можете добавить свойство name к содержащимся в нем объектам:
var example = [
{name: 'foo1', /* stuff1 */},
{name: 'foo2', /* stuff2 */},
{name: 'foo3', /* stuff3 */}
];
var whatWasFirst = example[0].name;
Если вам нужно получить доступ к «первому свойству объекта», он может означать, что что-то не так с вашей логикой. Порядок свойств объекта не имеет значения.
There isn't a "first" property. Object keys are unordered.
If you loop over them with for (var foo in bar)
you will get them in some order, but it may change in future (especially if you add or remove other keys).
Это уже рассматривалось здесь ранее.
Концепция first не применяется к свойствам объекта, и порядок цикла for ... in не гарантируется спецификациями, однако на практике это надежный FIFO , за исключением , критически важного для хрома ( отчет об ошибке ). Принимайте соответствующие решения.
Попробуйте выполнить for… in
loop и прервите его после первой итерации:
for (var prop in object) {
// object[prop]
break;
}
Нет. Литерал объекта, как определено в MDC , представляет собой:
список из нуля или более пар имен свойств и связанных значений объекта, заключенных в фигурные скобки ({}).
Следовательно, литерал объекта не является массивом, и вы можете получить доступ к свойствам, только используя их явное имя или цикл for
, используя ключевое слово in
.