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那你肯定知道怎麼屏蔽,如果你只是寫介面的那就需要根據需求去規範輸出對應的資料。