慎用json_decode的assoc參數(shù)

我們在工作中遇到的情況:

  1. vue 3前端界面 + php 后端 API
  2. vue 3采用typescript
  3. API數(shù)據(jù)采用json格式

出現(xiàn)的問題

當post api時提交的json數(shù)據(jù)中包含{}這種空JSON對象,比如style:{}, 后端php在處理過程中會變成[]并返回給前端,導致前端后續(xù)的功能出現(xiàn)bug,如這時再往style中設置值就不能正常工作了:style[‘foo’] = ‘bar’, 這時設置是不成功

問題的原因

原因1: typescript的強類型,如果是javascript,這點其實并不影響,JS數(shù)組可以直接設置值:var style = []; style[“foo”] = “bar”;這個操作是成功的。
原因2: 后端php在處理的過程中都是按數(shù)組格式處理:json_decode($data, true),無形中就把{}變成了php的空數(shù)組,然后返回給前端時json_encode就變成[]。

解決辦法

修改后端json_decode總是按對象格式處理