React NativeネットワークリクエストとJson-Stringパッケージ

3034 ワード

Serialization
'use strict';
import React, {Component} from 'react';

class JsonUtil extends Component {
    /*
     *      JSON
     * */
    static strToJson(data) {
        return JSON.parse(data);
    }
    /*
     * JSON     
     * */
    static jsonToStr(data) {
        return JSON.stringify(data);
    }
    /*
     * map   json
     * */
    static mapToJson(map) {
        return JSON.stringify(JsonUtil.strMapToObj(map));
    }
    /*
     * json   map
     * */
    static jsonToMap(jsonStr) {
        return JsonUtil.objToStrMap(JSON.parse(jsonStr));
    }
    /*
     * map     (map        ,         )
     * */
    static strMapToObj(strMap) {
        let obj = Object.create(null);
        for (let [k, v] of strMap) {
            obj[k] = v;
        }
        return obj;
    }
    /*
     *      Map
     * */
    static objToStrMap(obj) {
        let strMap = new Map();
        for (let k of Object.keys(obj)) {
            strMap.set(k, obj[k]);
        }
        return strMap;
    }
}

export default JsonUtil;

ネットワーク要求
'use strict';
import React, {Component} from 'react';

class NetUtil extends Component {

static DouB_Api = 'https://api.douban.com/v2/movie/top250?start=0&count=20';
/**
 * post  
 * url :     
 * data :   (Json  )
 * callback :     
 * */
static postJson(url, data, callback) {
    var fetchOption = {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(data)
    };

    fetch(url, fetchOption)
        .then((response) => response.text())
        .then((responseText) => {
            callback(JSON.parse(responseText))
        })
        .done();
}

/**
 * get  
 * url :     
 * callback :     
 */
static get(url, callback) {
    var fetchOptions = {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }
    };
    fetch(url, fetchOptions)
        .then((response) => response.text())
        .then((responseText) => {
            callback(JSON.parse(responseText));
        }).done();
    }
}
/**
 * put  
 * url :     
 * data :   (Json  )
 * callback :     
 * */
static putJson(url, data, callback) {
    var fetchOption = {
        method: 'PUT',
        headers: {
            'Content-Type': 'application/json',
            //     LeanCloud
            'X-LC-Id': 'M401fErHUPYhDKmgp0wjqVRX-gzGzoHsz',
            'X-LC-Key': 'Jqnvt1Lmt34vQh1JDRUpRAqq'
        },
        body: JSON.stringify(data)
    };

    fetch(url, fetchOption)
        .then((response) => response.text())
        .then((responseText) => {
            callback(JSON.parse(responseText))
        })
        .done();
  }
export default NetUtil;