Javascript 如何在React native中从JSON常量中提取数据

Javascript 如何在React native中从JSON常量中提取数据,javascript,json,reactjs,react-native,Javascript,Json,Reactjs,React Native,我有一个函数,可以从Google location Services API检索JSON格式的位置数据,并将数据存储到locationconst中。它检索的数据如下所示: { "mocked":false, "timestamp":11507048000, "coords":{ "speed":0, "heading":0, "accuracy":52.086999893188477, "altitude":3, "longitude":-51

我有一个函数,可以从Google location Services API检索JSON格式的位置数据,并将数据存储到
location
const中。它检索的数据如下所示:

{
  "mocked":false,
  "timestamp":11507048000,
  "coords":{
    "speed":0,
    "heading":0,
    "accuracy":52.086999893188477,
    "altitude":3,
    "longitude":-51.084,
    "latitude":14.183
  }
}
所以我想基本上访问和提取里面的数据。例如,获取纬度值并将其分配给变量

提前谢谢

查找坐标功能:

findCoordinates = () => {
  if (!this.state.locationPermission) {
    this.state.locationPermission = requestLocationPermission();
  }
  Geolocation.getCurrentPosition(
    position => {
      const location = JSON.stringify(position);
      this.setState({ location });
    },
    error => {
      Alert.alert(error.message);
    },
    {
      enableHighAccuracy: true,
      timeout: 20000,
      maximumAge: 1000
    }
  );
};

您可以使用下面的代码在状态中设置一个新对象

 get_Lat_User() {
        Geolocation.getCurrentPosition(
            (position) => {
                var lat = parseFloat(position.coords.latitude)
                var longi = parseFloat(position.coords.longitude)
                var initialRegion = {
                    latitude: lat,
                    longitude: longi,
                    longitudeDelta: 0.01 * ASPECT_RATIO,
                    latitudeDelta: 0.01
                }
                console.log("position", position)
                this.setState({ my_region: initialRegion })

            },
            (error) => {
                console.log(error.message);



            },
            { enableHighAccuracy: false, showLocationDialog: true, timeout: 20000, maximumAge: 1000 },
        );
    }

在setstate的回调中,尝试以下操作

 this.setState({ location },() =>{ 
      var data = this.state.location.coords.latitude;
      console.log(data)
});

您的代码
this.setState({location})
将分解对象的结构,因此要访问例如
时间戳
,您需要调用
this.state.timestamp

如果要将位置另存为单独的属性,请使用:

this.setState({ location: location });
这样您就可以调用
This.state.location.

请记住,setState()是一个异步函数,因此您可能无法立即使用该位置,除非您执行以下操作:

const loc;

this.setState({location:location}, () => {
  loc = this.state.location
});

未定义的结果!var data=this.state.location.coords.latitude?undefined不是对象(计算'this.state.location.coords.latitude')回调中的位置返回什么?