"class-transformer"라이브러리를 사용하여 json 본문을 JavaScript 개체로 구문 분석하려고하지만 그는 내 자식 개체를 인식하지 못합니다.
다음은 json 파일입니다.
{
"shops": [{
"shopId": 1,
"name": "La piscine Marius-Leclercq",
"address": "99 Avenue Barbusse, 62440 Harnes",
"description": "La piscine Marius-Leclercq est située en plein centre de la ville dans la rue Barbusse. Différentes spécialités sportives y sont proposées. Un bassin de 25 mètres de long vous accueille du lundi au dimanche ainsi qu’un petit bain pour les activités comme l’aquagym, l’aquadouce ou le jardin aquatique.",
"email": "[email protected]",
"phone": "03 21 13 96 00",
"localisation": {
"lat": 50.450157165527344,
"long": 2.898190498352051
},
"vidoLink": "https://www.youtube.com/watch?v=rqDEgCBYMxA&ab_channel=AvallonVision",
"pictures": [{
"idPicture": 1,
"link": "https://zupimages.net/up/21/02/cpri.jpg"
},
{
"idPicture": 2,
"link": "https://zupimages.net/up/21/02/3mkk.jpg"
}
],
"openShop": [{
"dayWeek": "Monday",
"hourStart": "12:00:00",
"endHour": "13:00:00"
},
{
"dayWeek": "Monday",
"hourStart": "16:15:00",
"endHour": "19:00:00"
},
{
"dayWeek": "Tuesday",
"hourStart": "16:15:00",
"endHour": "19:00:00"
},
{
"dayWeek": "Thursday",
"hourStart": "10:00:00",
"endHour": "13:30:00"
},
{
"dayWeek": "Thursday",
"hourStart": "14:00:00",
"endHour": "19:15:00"
},
{
"dayWeek": "Saturday",
"hourStart": "10:00:00",
"endHour": "12:00:00"
},
{
"dayWeek": "Saturday",
"hourStart": "14:00:00",
"endHour": "17:00:00"
},
{
"dayWeek": "Sunday",
"hourStart": "8:00:00",
"endHour": "12:00:00"
}
]
},
{
"shopId": 2,
"name": "Climb up",
"address": "Plaine sportive, 110 Rue Jean Jaurès, 59810 Lesquin",
"description": "Depuis plus de 15 ans nous cultivons la diversité au sein de nos structures. Diversité de profils, de visions et de sensibilités. Nos nombreux échanges ont ainsi donné jour à un concept de salles d’escalade pensées comme des lieux de vie ouverts à tous.",
"email": "[email protected]",
"phone": "03 20 07 57 42",
"localisation": {
"lat": 50.5865602,
"long": 3.1071495
},
"vidoLink": "https://www.youtube.com/watch?v=3-3a9GghAR0&ab_channel=ClimbUp",
"pictures": [{
"idPicture": 3,
"link": "https://zupimages.net/up/21/02/z8st.jpg"
},
{
"idPicture": 4,
"link": "https://zupimages.net/up/21/02/6yh3.jpg"
}
],
"openShop": [{
"dayWeek": "Monday",
"hourStart": "8:00:00",
"endHour": "23:00:00"
},
{
"dayWeek": "Tuesday",
"hourStart": "8:00:00",
"endHour": "23:00:00"
},
{
"dayWeek": "Wednesday",
"hourStart": "8:00:00",
"endHour": "23:00:00"
},
{
"dayWeek": "Thursday",
"hourStart": "8:00:00",
"endHour": "23:00:00"
},
{
"dayWeek": "Friday",
"hourStart": "8:00:00",
"endHour": "23:00:00"
},
{
"dayWeek": "Saturday",
"hourStart": "10:00:00",
"endHour": "23:00:00"
},
{
"dayWeek": "Sunday",
"hourStart": "8:00:00",
"endHour": "12:00:00"
}
]
}
]
}
내 DTO가 있습니다.
export class ShopEntity {
shops : ShopDto[];
}
export class ShopDto {
@Expose({
name: 'shopId'
})
id: number;
name: string;
address: string;
description: string;
email: string;
phone: string;
localisation: {
lat: number;
long: number;
}
videoLink: string;
offers: OfferDto[];
pictures: PictureDto[];
openShop: OpenShopDto[];
}
그리고 이것은 내 코드 줄입니다.
let shopsTab = plainToClass(ShopEntity, body);
ShopEntity에서 첫 번째 개체를 가져 오는 데 성공했지만 탭 상점이 정의되지 않았습니다.
모든 자식 개체에 대해 @Type(() => ChildObjectType)
. 배열은 제네릭이 typescript에 반영되는 방식으로 인해 직렬화되지 않습니다. 일반적으로에서 하위 오브젝트로 작업 할 때 데코레이터 class-transformer
를 추가해야합니다 @Type()
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다