У меня есть следующий код в приложении REST для codeigniter (построено с использованием: https://github.com/chriskacerguis/codeigniter-restserver )
public function fullname_get() { $fullname = array("fname"=>"john", "lname"=>"doe"); $data["json"] = json_encode($fullname); $this->response($data["json"], 200); }
Когда я вызываю API, это возвращает json, который выглядит так:
{\"fname\":\"john\",\"lname\":\"doe\"}
Вышеупомянутая строка json выдает ошибку http://jsonlint.com/ test из-за символа escape «\». Просто интересно, как я могу обойти это? Я создаю REST api, который должен вернуть json … и я должен убедиться, что это законный json.
Благодарю.
Попробуй это
$fullname = array("fname"=>"john", "lname"=>"doe"); $this->response($fullname, 200);//it sends data json format. You don't need to json encode it
Вы получили ответ, потому что ваши данные json закодированы дважды
Вы должны стричь косые черты, используйте это stripslashes (json_encode ($ fullname)). Полный код упоминается ниже:
public function fullname_get() { $fullname = array("fname"=>"john", "lname"=>"doe"); $data["json"] = stripslashes(json_encode($fullname)); $this->response($data["json"], 200); }
Надеюсь, это решит вашу проблему.
Это законный JSON – и вы не пишете тест;)
{ "fname": "john", "lname": "doe" }
См. Демонстрацию на http://ideone.com/5IW1Ef
Класс, который вы используете, делает магические вещи:
$this->response($this->db->get('books')->result(), 200);
и в зависимости от формата, указанного в URL-адресе, данные ответа преобразуются в JSON. Вам не нужно делать кодировку JSON.
Пожалуйста, ознакомьтесь с приведенными здесь примерами. https://github.com/chriskacerguis/codeigniter-restserver#responses
$fullname = array("fname"=>"john", "lname"=>"doe"); $this->response($fullname, 200);
http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter-2–net-8814