laravel JSON验证规则

时间:2018-06-11 15:16:10

标签: laravel

我正在尝试在表单请求中使用'json' validation rule,但我经常收到无效的JSON消息。我还没有找到关于如何使用这个规则的任何例子,所以我在这里有点迷失。

我的规则功能如下所示:

public function rules()
    {
        return [
            'userData'=>'json',
            'securityChanges'=>'json'
        ]
    }

我的JSON看起来像这样:

{
    "userData":{
        "domicilio":"nowere",
        "empresa":"Burgerking",
        "name":"zorgito",
        "surname": "perez",
        "cuit":"10101010"
    },
    "securityChanges":{
        "email": "flasheadas@lolo.com",
        "password": "777777777777",
        "passwordConfirmation":"777777777777"
    }
}

我的标题已正确设置:

Accept: application/json
Content-Type: application/json

它应该有用,但我得到了:

 "The user data must be a valid JSON string."

知道这里有什么问题吗?

编辑: 根据请求中的一个答案,我将dd($this->all());的输出放在我的表单请求类中

    array:2 [
      "userData" => array:5 [
        "domicilio" => "nowere"
        "empresa" => "Burgerking"
        "name" => "zorgito"
        "surname" => "perez"
        "cuit" => "10101010"
      ]
      "securityChanges" => array:3 [
        "email" => "flasheaasddas@lolo.com"
        "password" => "777777777777"
        "passwordConfirmation" => "777777777777"
      ]

   ]

整个HTTP请求是:

PATCH /api/users/me HTTP/1.1
Host: DOMAIN REMOVED
Authorization: Bearer (TOKEN REMOVED.)
Accept: application/json
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 73516b63-8556-4c21-9050-7a4fa3a83cb1

{
    "userData":{
        "domicilio":"nowere",
        "empresa":"Burgerking",
        "name":"zorgito",
        "surname": "perez",
        "cuit":"10101010"
    },
    "securityChanges":{
        "email": "flasheaasddas@lolo.com",
        "password": "777777777777",
        "passwordConfirmation":"777777777777"
    }
}

1 个答案:

答案 0 :(得分:0)

这里没有任何说明,请发dd($ request-> all())或dd($ this-> all())(如果你直接在请求类中)并确保你有这些字段,并且然后确保字段是有效的json字符串。您可以在此处查看https://jsonlint.com/