Как преобразовать данные json в другой формат - PullRequest
0 голосов
/ 28 февраля 2020

, поэтому я получаю данные из своего API в следующем формате:

[
    {
        "lattitude": 52.57812538272844,
        "longitude": -1.7111388218750108,
    },
    {
        "lattitude": 53.043884,
        "longitude": -2.923782,
    }
]

Мне нужны данные, чтобы они выглядели так, поэтому широта должна быть 'широта', а долгота должна быть 'lng' и т. Д. c.

[{
            lat: 52.57812538272844,
            lng: -1.7111388218750108,
        },
        {
            lat: 52.3602160,
            lng: 4.8891680,
}]

Я знаю, что некоторые данные отсутствуют, я исправлю это позже. Есть ли способ сделать это без изменения API. Я использую Angular -nativescript с. net backend

Ответы [ 3 ]

2 голосов
/ 28 февраля 2020

Данные для вас c? Или это наблюдаемый?

Предполагая, что это stati c, используйте оператор map для массивов. Он преобразует массив в новый массив.

const data = [
    {
        "lattitude": 52.57812538272844,
        "longitude": -1.7111388218750108,
    },
    {
        "lattitude": 53.043884,
        "longitude": -2.923782,
    }
];

const dataYouWant = data.map((point: any) => ({lat: point.lattitude, lng: point.longitude }));

Если это наблюдаемая, дайте мне знать, я могу помочь вам и в этом отношении.

1 голос
/ 02 марта 2020

Я придумал, как это сделать, используя Nativescript + Angular, аналогично описанным выше. В методах выше я получал ошибки, но в этом методе нет ошибок

Это код, который я использовал

// Code to get the data
getBusinesses() {
    let baseUrl = environment.apiUrl + 'business/locations'
    this.http.get(baseUrl).subscribe(response => {
// Once you have your response from the api, send the data to the createData function
        this.createData(response)
    }, error => {
        console.log(error)
    });
}

// Code to map the data
createData(data) {
    var newData = data.map(item => ({
            lat: item.lattitude,
            lng: item.longitude,
            title: item.address,
            subtitle: item.description,
    }))
    console.log(newData)
}

Это новый вывод

JS: [{
JS:   "lat": 52.57812538272844,
JS:   "lng": -1.7111388218750108,
JS:   "title": "Non deserunt labore sunt ex laboris et adipisicing ullamco officia minim.",
JS:   "subtitle": "test"
JS: }, {
JS:   "lat": 53.043884,
JS:   "lng": -2.923782,
JS:   "title": "Non deserunt labore sunt ex laboris et adipisicing ullamco officia minim.",
JS:   "subtitle": "test"
JS: }]
1 голос
/ 28 февраля 2020
jsonData = jsonData.map(item => ({ lat: item.lattitude, lng: item.longitude }));

или

function renameProp(obj, oldPropName, newPropName) {
  obj[newPropName] = obj[oldPropName];
  delete obj[oldPropName];
}

jsonData.forEach(item => {
  renameProp(item, "lattitude", "lat");
  renameProp(item, "longitude", "lng");
});
...