php作為介面返回json資料格式問題

來源:互聯網
上載者:User
php作為介面返回json資料格式問題,返回的資料中,如果是多維陣列就是[{ ...... }]這種形式,如果這裡面空,應該返回 [ ] 這種。
如果是一維數組,{.......}這種形式,如果它是空,也要返回 { } 這種形式。
問題來了,如果多維陣列為空白,比如$result = array();,返回的就是 [ ] 這種形式。改怎麼改呢?
echo str_replace('[]', '{}', json_encode($json)); 這樣的話就把所有的 [ ] 都替換成 { } 大括弧了


回複討論(解決方案)

if判斷一下輸出的值,根據不同的資料結果輸出不同的$json後再json_encode

返回空數組或Null 物件會影響使用嗎?

返回空數組或Null 物件會影響使用嗎?


不僅僅是影響使用了,是根本沒法用了。安卓的閃退,就是因為它

那是因為你沒有判空

那是因為你沒有判空


判斷了,空的話我就讓它為空白數組$a=array();

不需要替換的,你用java的json進行解析後就是個數組,直接判斷就好了。閃退的原因是因為你沒有對Null 物件傳遞進行屏蔽導致程式致命錯誤直接閃退,是代碼不嚴謹導致,跟json的括弧沒關係。

當然你也可以做一下類型轉換(不過使用時不判空總是不行的)

$a = array( 'b' => (object)array(), 'c' => array(),);echo json_encode($a);
{"b":{},"c":[]}

不需要替換的,你用java的json進行解析後就是個數組,直接判斷就好了。閃退的原因是因為你沒有對Null 物件傳遞進行屏蔽導致程式致命錯誤直接閃退,是代碼不嚴謹導致,跟json的括弧沒關係。


如何對空的進行屏蔽,很多資料都是空呀

建議你返回json的時候最外層用對象,這樣json_encode之後就是{};

$rst = new stdClass();echo json_encode($rst);$rst->code = 200;$rst->errormessage = "操作成功";$rst->data = array( 'name' => '張三');echo json_encode($rst);


不需要替換的,你用java的json進行解析後就是個數組,直接判斷就好了。閃退的原因是因為你沒有對Null 物件傳遞進行屏蔽導致程式致命錯誤直接閃退,是代碼不嚴謹導致,跟json的括弧沒關係。


如何對空的進行屏蔽,很多資料都是空呀


個人覺得你們的json輸出需要有一個統一的出口,這樣就輸出結果進行統一的控制


不需要替換的,你用java的json進行解析後就是個數組,直接判斷就好了。閃退的原因是因為你沒有對Null 物件傳遞進行屏蔽導致程式致命錯誤直接閃退,是代碼不嚴謹導致,跟json的括弧沒關係。


如何對空的進行屏蔽,很多資料都是空呀

你要交給androidJava的去做這個工作,如果你是寫android那你肯定知道怎麼屏蔽,如果你只是寫介面的那就需要根據需求去規範輸出對應的資料。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.