Redux - 从动作处理程序发送嵌套的JSON会导致数据丢失

时间:2018-04-13 04:35:10

标签: javascript redux

从服务器处理一些JSON(最初不是以JSON编码),在这样的动作创建器中,然后将其发送到我的reducer:

return fetch(`${SERVICE_API_BASE_URL}/api/categorytree?ope_flg=1`)
    .then(
        response =>  response.text(),
        error => console.log("error in fetch cat", error)
    )   

    .then(
        json_txt => {
            console.log("json", JSON.parse(json_txt))
            dispatch({
                type: FETCH_CATEGORIES_RESPONSE,
                categories: JSON.parse(json_txt) 
            })  
        }                                                                                     
    )   
    .catch(
        ex => console.log("parsing failed", ex)                                               
    )   

从该控制台日志中,我可以看到数据结构已正确表示:

"data": {
    "category_tree": [
        {
            "category_id": "1",
            "name": "A",
            "children": [{...}] // <-- this is full of children
        }
    ]
}

children键是一个嵌套数组,其中包含对象。记录我从我的动作创建者那里做的事情,我可以看到正确的对象就在那里。

然而,当对象到达我的reducer时:

case FETCH_CATEGORIES_RESPONSE:
    console.log("reducer:", action.categories)
    return Object.assign({}, state, {
        isFetching: false,
        valid: true,
        categories: action.categories.data.category_tree
    })  

该控制台日志显示部分数据结构已丢失:

"data": {
    "category_tree": [
        {
            "category_id": "1",
            "name": "A",
            "children": []
        }
    ]
}

children现在是一个空数组。什么可能导致这种数据丢失?

修改:这是“JSON文字”的原始blob&#39;完全没有格式化

{&#34;导致&#34;:真,&#34;数据&#34; {&#34; category_tree&#34;:[{&#34; CATEGORY_ID&#34;:&#34; 1& #34;&#34; parent_category_id&#34;:空,&#34;名称&#34;:&#34; CATEGORY1&#34;&#34;排序&#34;:&#34; 1&#34; &#34; url_key&#34;:&#34;类别1&#34;&#34; meta_description&#34;:空,&#34; meta_keywords&#34;:空,&#34; enable_flg&#34 ;: #&34; 1&#34;&#34; CREATE_DATE&#34;:&#34; 1520561073&#34;&#34; UPDATE_DATE&#34;:&#34; 1522736897&#34;&#34; del_flg& #34;:&#34; 0&#34;&#34;的子&#34;:[{&#34; CATEGORY_ID&#34;:&#34; 2&#34;&#34; parent_category_id&#34; :&#34; 1&#34;&#34;名称&#34;:&#34; STANDARD&#34;&#34;排序&#34;:&#34; 1&#34;&#34; url_key&#34;:&#34;标准&#34;&#34; meta_description&#34;:空,&#34; meta_keywords&#34;:空,&#34; enable_flg&#34;:&#34; 1& #34;&#34; CREATE_DATE&#34;:&#34; 1520561073&#34;&#34; UPDATE_DATE&#34;:&#34; 1521182557&#34;&#34; del_flg&#34;:& #34; 0&#34;&#34;的子&#34;:[{&#34; CATEGORY_ID&#34;:&#34; 28&#34;&#34; parent_category_id&#34;:&#34; 2&#34;&#34;名称&#34;:&#34; STAN_CHILD&#34;&#34;排序&#34;:&# 34; 1&#34;&#34; url_key&#34;:&#34; 28&#34;&#34; meta_description&#34;:空,&#34; meta_keywords&#34;:空,&#34 ; enable_flg&#34;:&#34; 1&#34;&#34; CREATE_DATE&#34;:&#34; 1523519951&#34;&#34; UPDATE_DATE&#34;:&#34; 1523519951&#34; &#34; del_flg&#34;:&#34; 0&#34;}]}]},{&#34; CATEGORY_ID&#34;:&#34; 10&#34;&#34; parent_category_id&#34 ;:空,&#34;名称&#34;:&#34; woogirls&#34;&#34;排序&#34;:&#34; 3&#34;&#34; url_key&#34;:空&#34; meta_description&#34;:空,&#34; meta_keywords&#34;:空,&#34; enable_flg&#34;:&#34; 1&#34;&#34; CREATE_DATE&#34 ;: #&34; 1522054000&#34;&#34; UPDATE_DATE&#34;:&#34; 1522054000&#34;&#34; del_flg&#34;:&#34; 0&#34;},{&#34 ; CATEGORY_ID&#34;:&#34; 11&#34;&#34; parent_category_id&#34;:空,&#34;名称&#34;:&#34; superjuice&#34;&#34;排序&# 34;:&#34; 4&#34;&#34; url_key&#34;:空,&#34; meta_description&#34;:空,&#34; meta_keywords&#34;:空,&#34; enable_flg& #34;:&#34; 1&#34;&#34; CREATE_DATE&#34;:&#34; 1522054098&#34;&#34; UPDATE_DATE&#34;:&#34; 1522054098&#34;,& #34; del_flg&#34;:&#34; 0&#34;},{&#34; catego ry_id&#34;:&#34; 12&#34;&#34; parent_category_id&#34;:空,&#34;名称&#34;:&#34;附件&#34;&#34;排序&#34 ;:&#34; 5&#34;&#34; url_key&#34;:&#34;附件&#34;&#34; meta_description&#34;:&#34;附件&#34;&#34 ; meta_keywords&#34;:&#34;测试&#34;&#34; enable_flg&#34;:&#34; 1&#34;&#34; CREATE_DATE&#34;:&#34; 1522115928&#34; &#34; UPDATE_DATE&#34;:&#34; 1522116073&#34;&#34; del_flg&#34;:&#34; 0&#34;}]}

0 个答案:

没有答案