將JSON資料儲存到SESSION出現問題

來源:互聯網
上載者:User
用戶端傳遞的JSON資料:
[    {        "category_id": 0,        "category_products": [            [                {                    "para_name": "品牌",                    "para_val": "海飛絲"                },                {                    "para_name": "生產日期",                    "para_val": "2015-08-11"                }            ],            [                {                    "para_name": "品牌",                    "para_val": "新絲路"                },                {                    "para_name": "生產日期",                    "para_val": "2015-08-11"                },                {                    "para_name": "適用發質",                    "para_val": "乾枯、毛躁、油性頭髮"                }            ]        ]    },    {        "category_id": 1,        "category_products": [            [                {                    "para_name": "品牌",                    "para_val": "潘婷"                },                {                    "para_name": "生產日期",                    "para_val": "2015-06-11"                }            ]        ]    }]

通過序列化和還原序列化後取出來的資料就和上面的不一樣了!我該怎麼辦?這是在PHP中還原序列化後取出來的資料:
a: 2: {    i: 0;O: 8: "stdClass": 2: {        s: 11: "category_id";i: 0;s: 17: "category_products";a: 2: {            i: 0;a: 2: {                i: 0;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 6: "品牌";s: 8: "para_val";s: 9: "海飛絲";                }i: 1;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 12: "生產日期";s: 8: "para_val";s: 10: "2015-08-11";                }            }i: 1;a: 3: {                i: 0;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 6: "品牌";s: 8: "para_val";s: 9: "新絲路";                }i: 1;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 12: "生產日期";s: 8: "para_val";s: 10: "2015-08-11";                }i: 2;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 12: "適用發質";s: 8: "para_val";s: 30: "乾枯、毛躁、油性頭髮";                }            }        }    }i: 1;O: 8: "stdClass": 2: {        s: 11: "category_id";i: 1;s: 17: "category_products";a: 1: {            i: 0;a: 2: {                i: 0;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 6: "品牌";s: 8: "para_val";s: 6: "潘婷";                }i: 1;O: 8: "stdClass": 2: {                    s: 9: "para_name";s: 12: "生產日期";s: 8: "para_val";s: 10: "2015-06-11";                }            }        }    }}


回複討論(解決方案)

你的第二段資料是 序列化的

你的第二段資料是 序列化的


試了,確實是沒有還原序列化就取出來就會這樣子。
不過我想還原序列化後再次輸出給用戶端,通過Ajax 返回json,我再次json_encode 還原序列化的資料,通過console.log出來變成[object object] 了,這是正常的嗎?

我不知道你的應用情境
你的第一段資料是 json 串,並不會序列化成第二段資料

console.log出來變成[object object] 是正確的

看到你有stdclass 說明你是對返回的json進行了decode 後面那個json_decode($json,1); true的參數加上
當然 後面urlcode什麼的就看你自己的了

ps 為什麼要多此一舉decode encode 直接序列化反序列好了

我不知道你的應用情境
你的第一段資料是 json 串,並不會序列化成第二段資料

console.log出來變成[object object] 是正確的


我在服務端擷取原始JSON串後,通過json_decode將JSON串轉化成數組對象,然後序列化這個數組對象,賦值給$_SESSION變數。之所以這麼做,因為我的資料是兩級,然後數目不固定。類似百度經驗那樣的後台錄入介面。所以我通過json進行前後台資料傳遞,在最終發布內容之前,先將資料暫存在SESSION中,任何增刪改查都不用經過資料庫(這種方法試過,因為資料關聯為兩層結構,增刪改查非常困難)。
不知我這種做法是否恰當,還有更好的解決方案?

那也沒必要序列化,直接存入 session 就行了

我不知道你的應用情境
你的第一段資料是 json 串,並不會序列化成第二段資料

console.log出來變成[object object] 是正確的



前端介面操作



請問還有更好的解決辦法嗎?


那也沒必要序列化,直接存入 session 就行了



GOOD!果然不需要序列化,多此一舉。Thank You!
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.