反应原生json解析(无法解析我的代码中的json对象)

时间:2018-10-15 07:35:10

标签: json react-native asyncstorage

这是我的代码。在此我得到了x,但是当我尝试解析x以获取x'isloggedin'的对象时,它给出了错误。如果您了解我的问题,我该怎么做告诉我。

componentDidMount() {
    this.onLoad();
  }
 onLoad = async () => {
    try {
        var walletdata = await AsyncStorage.getItem('wallet');
        this.setState({x: JSON.parse(walletdata)})
        this.setState({y: JSON.stringify(this.state.x)})
        console.log("output:  "+ this.state.y);
        console.log("output y:"+JSON.parse(this.state.y.isloggedIn));
      }catch(error){
        console.log("error: "+error);
      }
  }

错误:语法错误:JSON解析错误:意外的标识符“未定义”

3 个答案:

答案 0 :(得分:0)

可能是因为“钱包”键在缓存存储中具有未定义的值。您应该先检查该值(从存储中获取该项目后立即检查),如果未定义,则必须首先进行设置。

答案 1 :(得分:0)

可能您需要等待第一个setState函数完成,以便您可以在第二次调用中访问它。

简而言之,在状态中设置值会花费一些时间,并且您正在尝试访问它,然后再更新状态。因此,请尝试访问setState函数的回调中的值。

相反,

for index, value := range ids {
    valueMap := value.(map[string]interface{})
    fmt.Println(index, valueMap["ID"])
}

您可以使用此:

this.setState({x: JSON.parse(walletdata)})
this.setState({y: JSON.stringify(this.state.x)})
console.log("output:  "+ this.state.y);
console.log("output y:"+JSON.parse(this.state.y.isloggedIn));

答案 2 :(得分:0)

我已经解决了我的问题。谢谢您的回答。下面是我如何解决我的问题。

 try {
            var walletdata = await AsyncStorage.getItem('wallet');
            this.setState({wallet: JSON.stringify(JSON.parse(walletdata))})                
            this.setState({isLoggedin:JSON.parse 
                 (this.state.wallet).isLoggedin});
            console.log(this.state.isLoggedin);
        }catch(error){
            console.log("error: "+error);
        }