json возвращается из CI REST API не выполняет тесты jsonlint

У меня есть следующий код в приложении 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.

Благодарю.

Related of "json возвращается из CI REST API не выполняет тесты jsonlint"

Попробуй это

  $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