首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CI REST返回的json正在通过jsonlint测试。

从CI REST返回的json正在通过jsonlint测试。
EN

Stack Overflow用户
提问于 2015-01-15 20:40:37
回答 3查看 250关注 0票数 0

我在一个代码点火器REST应用程序中有以下代码(使用:https://github.com/chriskacerguis/codeigniter-restserver构建)

代码语言:javascript
复制
public function fullname_get()
{
   $fullname = array("fname"=>"john", "lname"=>"doe");
   $data["json"] = json_encode($fullname);
   $this->response($data["json"], 200);
}

当我调用API时,返回的json如下所示:

代码语言:javascript
复制
{\"fname\":\"john\",\"lname\":\"doe\"}

由于转义字符"\“,上述json字符串无法通过http://jsonlint.com/测试。只是想知道我怎么处理这件事?我正在构建一个REST应该返回json ..。我得确保这是合法的。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-15 22:31:03

尝尝这个

代码语言:javascript
复制
 $fullname = array("fname"=>"john", "lname"=>"doe");
 $this->response($fullname, 200);//it sends data json format. You don't need to json encode it

您得到了这个响应,因为您的数据被json编码了两次。

票数 1
EN

Stack Overflow用户

发布于 2015-01-15 20:52:43

它是合法的JSON --而且您没有编写测试;)

代码语言:javascript
复制
{
    "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

代码语言:javascript
复制
 $fullname = array("fname"=>"john", "lname"=>"doe");
 $this->response($fullname, 200);

http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter-2--net-8814

票数 0
EN

Stack Overflow用户

发布于 2015-01-16 06:12:05

你必须去掉斜杠,使用这个斜杠(json_encode($fullname))。全文如下:

代码语言:javascript
复制
public function fullname_get()
{
   $fullname = array("fname"=>"john", "lname"=>"doe");
   $data["json"] = stripslashes(json_encode($fullname));
   $this->response($data["json"], 200);
}

我希望这能解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27972580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档