2016-03-11 26 views
-1

我有一個這樣的數組:將數組索引轉換爲字符串?

$errors[] = "Field not correct."; 

我想返回一個JSON編碼爲:{"errore" : "Field not correct"}這是我的代碼做到這一點:

return json_encode(array("error" => serialize($errors))); 

,但我得到:

{ 
    "error": "a:1:{i:0;s:21:"Field not correct.";}" 
} 

如何避免響應中的符號a:1:{i:0;s:21

回答

5

您需要刪除serialize並且只能使用json_encode

$errors[] = "Field not correct."; 
return json_encode(["error" => $errors]); 

注意,這將有誤差的陣列,由於你的方式把你的錯誤字符串爲數組第一。

如果您只有一條錯誤消息,請不要使用$errors陣列。

$error = "Field not correct."; 
return json_encode(["error" => $error]); 

在這裏看到兩個選項:https://3v4l.org/JQVNA

+0

感謝您的提示,只是一個問題,爲什麼你還裝在支架'[''到json_encode'? – Sandokan

+1

@Sandokan這只是數組的簡寫符號。它和'array('short'一樣,我更喜歡它 – jszobody

+0

哦!我不知道,謝謝你!祝你有美好的一天:) – Sandokan

5

只是不叫serialize(將其轉換成一個特定的PHP字符串格式)。

將您的PHP數據結構直接轉換爲json_encode(將其轉換爲標準字符串格式)。

1

問題是,您可能有多個錯誤,但您提供的格式只支持一個錯誤。 $errors可能有多個條目。 {"errore" : ".."}只能保留一條消息。

所以,你有一些選擇:

只能使用第一次失誤$errors

return json_encode(array("error" => $errors[0])); 

一些功能(即join

return json_encode(array("error" => join(',', $errors))); 

變化的形式組合的錯誤你輸出支持多種錯誤

return json_encode(array("error" => $errors)); 

這將導致像

JSON字符串
{"errore" : ['msg', ...]}