Angular / Typescript Для использования веб-службы json мне нужно создать весь возвращаемый класс? - PullRequest
0 голосов
/ 19 мая 2018

Я хочу использовать эту услугу :

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

Мне нужны только две данные:

        "location" : {
           "lat" : -10.6872332,
           "lng" : -37.4329352

Но это вернет 11 различных классов.У меня вопрос: Нужно ли создавать весь этот класс цепочек для использования только 2 полей?

В данный момент мой метод остановлен в этой точке.

getCoord(city:string): Observable<any>
{
    return this._http.get(this.urlBase+cidade+this.key)
        //.map((response: Response) => <any>response.json())
        .do(data => console.log('All: ' + JSON.stringify(data)));
}

1 Ответ

0 голосов
/ 19 мая 2018

Нет, я не.Чтобы использовать только некоторые свойства json, нужно только создать класс / путь для размещения данных.В моем случае для get Location {lat: number;lng: number;} Я создаю объект / класс и некоторые интерфейсы:

interface Location{lat: number; lng: number;}
interface Geometry{location: Location;}
interface Result{geometry: Geometry;}

export class GeocoderResult {
    results: Array<Result>;
    status: string;

    constructor() {
        this.results = new Array<Result>();
    }
}

и в файле .TS мой метод работает отлично:

key: string = '&key=XXX';
urlBase: string = 'https://maps.googleapis.com/maps/api/geocode/json?address=';
city: string = 'yourCityName';

getCoord(city: string): any
{
    return this._http.get<GeocoderResult>(this.urlBase+city+this.key)
    .subscribe(data => {    
        return data.results[0].geometry.location;
        //console.log('geo = ', data.results[0].geometry.location);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...