JSON stringify在react native中做什么

时间:2019-05-28 10:16:20

标签: react-native

我是本机应用程序开发的新手。我对JSON.stringify方法有些困惑。这是我的代码。

fetch('http://link.com', {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'multipart/form-data',
        },
        body: formData

    }).then((response) => response.json())
    .then((responseJson) => {
        this.setState({
            loading_status: false
        })

        if (!responseJson.error) {

            var id = responseJson.result.id
            var roles_id = responseJson.result.roles_id

            AsyncStorage.multiSet([
                ['user_id', id.toString()],
                ['roles_id', roles_id.toString()],

            ]);

        } else {
            //error

        }

    }).catch((error) => {
        console.error(error);

        Platform.OS === 'android' ? ToastAndroid.show("Connection Error !", ToastAndroid.SHORT) : Alert.alert("Connection Error !")

        return;
    });

但是当我开始为此构建时会出现主要问题。我看到的是不在字符串中的值在从异步存储中写入或读取数据时会产生错误。 它给我的错误在ios建立类似的东西。 NSnull cannot be converted into NSString 所以我将代码更改为这样的

 if (!responseJson.error) {

    var id = JSON.stringify(responseJson.result.id)
    var roles_id = JSON.stringify(responseJson.result.roles_id)

    AsyncStorage.multiSet([
        ['user_id', id],
        ['roles_id', roles_id],

    ]);
}

现在这在ios build中可以正常工作。所以我的疑问是我如何解析json或有任何标准方法来解析react native中的json,这样我就不会遇到使ios build for react遇到的问题了。

2 个答案:

答案 0 :(得分:0)

JSON.stringify()用于将JSON转换为字符串。要解析字符串数据,使用JSON.parse()。

答案 1 :(得分:0)

在您的示例中,尚不清楚null的来源,但是您可以看看向replacer调用中添加了JSON.stringify函数。有关详情,请参见this link。像这样:

function replacer(key, value) {
    if (value === null) {
        return undefined;
    }
    return value;
 }
 ...
 let result = JSON.stringify(responseJSON.result, replacer);

这使您可以根据需要修改字符串化结果。