У меня есть Json данные, которые выглядят следующим образом:
{
"restaurant": null,
"details": [
{
"text": {
"text": "Tea",
"coordinateX": 311
},
"price": {
"unitPrice": 5.0,
"coordinateX": 389
}
},
{
"text": {
"text": "Americano",
"coordinateX": 311
},
"price": {
"unitPrice": 41.24,
"coordinateX": 205,
}
},
{
"text": {
"text": "Latte",
"coordinateX": 130
},
"price": {
"unitPrice": 43.24,
"coordinateX": 205,
}
}
]
}
Я использую шаблон адаптера модели для сопоставления результата json из API с моделями, которые я создал. Моя проблема в том, что вложенные объекты не отображаются. Только самый внешний объект имеет вид.
Объект ImageResult - это единственный объект, который правильно сопоставлен
export class ImageResult {
constructor(
public Restaurant: string,
public CapturedDetails: Array<Details>
) {}
static adapt(item: any): ImageResult {
return new ImageResult(
item.restaurant,
item.details
);
}
}
Подробности Объект - больше не отображается. Отображается как generi c Object
export class Details {
constructor(
public Text: Word,
public UnitPrice: Price
) {}
static adapt(item: any): Details {
return new Details(
item.text,
item.price
);
}
}
Word Object - больше не отображается. Отображается как generi c Object
export class Word {
constructor(
public Text: string = '',
public CoordinateX: number = 0
) {}
static adapt(item: any): Word {
return new Word(
item.text,
item.coordinateX
);
}
}
Отображение при вызове API:
GetText(formData: FormData): Observable<ImageResult> {
return this.httpClient.post(this.getServiceUrl('TextCapture'), formData)
.pipe(map(ImageResult.adapt));
}