我正在通过React-Native
使用API,并且JSON响应中包括了数据类型字符串,如下所示:
{"volumeInfo": Object {
"allowAnonLogging": false,
"authors": Array [
"Tim Mathers",
],
"canonicalVolumeLink": "https://market.android.com/details?id=book-ZzOPDwAAQBAJ",
"categories": Array [
"Sports & Recreation",
]}
请注意,响应中包括“对象”和“数组”类型的字符串。
当我从CLI curl
使用相同的端点时,会得到正确格式的JSON,如下所示:
{"volumeInfo": {
"title": "Baseball",
"subtitle": "America's Diamond Mind, 1919-1941",
"authors": [
"Richard C. Crepeau"
],
"publisher": "U of Nebraska Press",
"publishedDate": "2000"}
来自curl
的数据不仅以正确的格式返回,而且以与我的应用程序完全不同的顺序返回。这使我相信我的实现是原因。参见下面的代码
操作
export function searchBooks(book)
{
const url = `${BASE_URL}q=${book}&filter=free-ebooks&key=${API_KEY}`;
return dispatch => {
dispatch(getData());
fetch(url)
.then(blob => blob.json())
.then(data => {
console.log(data)
dispatch(getDataSuccess(data))
})
.catch(e => {
console.log(e);
dispatch(getDataFailure(e.message))
});
}
}
减速器
const initialState = {
payload:[],
fetching: false,
error: false
}
export default function(state=initialState, action){
switch (action.type){
case FETCHING_DATA: return {payload:[], fetching: true, ...state}
case FETCH_SUCCESS: return {payload:[action, ...state]}
case ERROR: return {payload:[], error: true, ...state}
}
return state;
}
感谢您澄清为什么JSON中包含数据类型以及实现的原因。