各位大佬帮忙看下写的返回是否不是 JSON 格式或者是结构不对


$picture = Db::name('carousel')->where(['carouselstatus' => 0])->select();
foreach ($picture as $key => &$item) {
  $item['carouselurl'] = $SERVER['REQUESTSCHEME']."://".$SERVER['HTTPHOST']. $item['carouselurl'];
}
return $this->returnJson('1', '查询成功', $picture);

function returnJson($code, $msg, $data = [])
{
  $arr['code'] = $code;
  $arr['msg'] = $msg;
 if (in_array('', $arr)) {
  return false;
  }
  if (!empty($data)) {
  $arr['data'] = $data;
  }
  return jsonencode($arr);
}
```*

今天这个又报错了,返回的可能不是json串或者结构不对,现在这些数据都是死的只是在数据库读取一下,没有其他变化,哪个大佬能帮忙解读下~~
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9
AScorpio

这行代码不对,应该 $picture[$key]['carouselurl']

$item['carouselurl'] = $SERVER['REQUESTSCHEME']."://".$SERVER['HTTPHOST']. $item['carouselurl'];

这段代码,return false 不合理,应该返回同样的格式

if (in_array('', $arr)) {
  return json_encode([]);
  }
4年前 评论
╰ゝSakura 4年前

@AScorpio 大佬 你提的第一个我不是在循环里挨个插入吗? 这样做不行吗?关于第二个我让他直接返回json空是吗? 那对于安卓来说也是结构变了,问题是否在return之前把,很纠结

4年前 评论
AScorpio 4年前
FirstBlood (作者) (楼主) 4年前
AScorpio 4年前
AScorpio 4年前
FirstBlood (作者) (楼主) 4年前
╰ゝSakura

file

4年前 评论

@╰ゝSakura 我试着去加了参数,但是直接返回为NULL

4年前 评论
╰ゝSakura 4年前

正常情况下直接访问不报错,但是隔一天访问就会崩溃,但是直接api访问接口也不报错........ :sob: :sob: :sob: :sob: :sob:

4年前 评论
AScorpio

return new Response(0, []);
return new Response(500, '错误消息');
除了用于返回数据,还用于判断方法函数是否执行成功等

class Response
{

    protected $code;
    protected $msg;
    protected $data;

    /**
     * Response constructor.
     * @param integer|\Exception $code
     * @param string $data_or_msg
     */
    public function __construct($code, $data_or_msg = '')
    {
        if($code instanceof \Exception) {
            $this->msg = $code->getMessage();
            $this->code = $code->getCode()?$code->getCode():1000;
        } else {
            $this->code = $code;
            if($this->code) {
                $this->msg = $data_or_msg;
            } else {
                $this->data = $data_or_msg;
            }
        }

    }

    public function getCode()
    {
        return $this->code;
    }

    public function setData($data)
    {
        $this->data = $data;
    }

    /**
     * @return mixed
     */
    public function getData()
    {
        return $this->data;
    }

    public function getMsg()
    {
        return $this->msg;
    }

    public function isSuccess()
    {
        return $this->code == 0?true:false;
    }

    public function asArray()
    {
        $data = $this->data;
        if(is_object($data) || is_array($data)) {
            $data = ArrayHelper::toArray($data);
        }
        return [
            'code'=>$this->code,
            'msg'=>$this->msg,
            'data'=>$data,
        ];
    }

    public function __toString()
    {
        return json_encode($this->asArray());
    }
}
4年前 评论

举个栗子:

<?php

$data = ['id' => 1, 'name' = 'test'];

// 上面的数据使用 json_encode 后
echo json_encode($data);
// {"id":1,"name":"test"}

// 嗯,看起来并没有什么问题
// 但是当 $data 为空数组后
$data = [];
echo json_encode($data);
// []
// json_encode 后 ,这就导致了app那边数据类型不匹配崩溃。

原因这里有详解:问答:与安卓对接需要注意那些呢

4年前 评论

@熊二哈 你好这个知道,关键读的数据库市一定有数据的

4年前 评论

我怎么感觉这条查询语句写错了啊

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!