【问题标题】:How to extract data out of JSON const in React native如何在 React Native 中从 JSON const 中提取数据
【发布时间】:2020-03-05 11:32:01
【问题描述】:

我有一个函数可以从 Google 位置服务 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 函数:

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
    }
  );
};

【问题讨论】:

  • 未定义结果!
  • var data = this.state.location.coords.latitude?

标签: javascript json reactjs react-native


【解决方案1】:

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

 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 },
        );
    }

【讨论】:

    【解决方案2】:

    在setstate的回调里面,试试这个

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

    【讨论】:

    • undefined 不是一个对象(评估 'this.state.location.coords.latitude')
    • 你的回调中的位置返回什么?
    【解决方案3】:

    您的代码this.setState({ location }); 将解构该对象,以便访问例如timestamp,你需要打电话给this.state.timestamp

    如果您希望将该位置保存为单独的属性,请使用:

    this.setState({ location: location });
    

    这样你就可以拨打this.state.location.<property>

    请记住,setState() 是一个异步函数,因此您可能无法立即使用该位置,除非您这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2021-10-19
      • 2016-11-22
      • 1970-01-01
      • 2020-08-02
      相关资源
      最近更新 更多