【问题标题】:Invalid text representation: 7 ERROR: invalid input syntax for type json\nDETAIL: The input string ended unexpectedly文本表示无效:7 错误:json 类型的输入语法无效\n详细信息:输入字符串意外结束
【发布时间】:2022-03-01 14:17:25
【问题描述】:

我想从邮递员将数据输入到数据类型为 json 的字段中,但我收到了类似上面的错误,这是我的代码:

foreach($request->body as $body)
            {
                if(!empty($body['id'])){
                    $approval_template_body     = \App\Models\ApprovalTemplateBody::find($body['id']);
                } 
                else {
                    $approval_template_body     = new \App\Models\ApprovalTemplateBody();
                }
                
                $approval_template_body->approval_template_head_id      = $approval_template_head->id;
                $approval_template_body->order_number                   = $body['order_number'];
                $approval_template_body->approver                       = str_replace("'", '"', $body['approver']);
                $approval_template_body->is_free_choice                 = $body['is_free_choice'] ? 1 : 0;
                $approval_template_body->is_free_choice_loop            = $body['is_free_choice_loop'] ? 1 : 0;
                $approval_template_body->can_multiple                   = $body['can_multiple'] ? 1 : 0;
                $approval_template_body->on_approve                     = $body['on_approve'];
                $approval_template_body->on_reject                      = $body['on_reject'];
                $approval_template_body->save();


            }

这是我要输入的数据:

"approver": "[{'mst_mail_group_id':1},{'mst_mail_group_id':4}]",

我想将单引号 (') 替换为双引号 (")

而且错误就行了:

$approval_template_body->approver = str_replace("'", '"', $body['approver']);

我找到了解决方案,解决方案是: $approval_template_body->approver = json_encode(str_replace("'", '"', $body['approver']));

【问题讨论】:

  • $body['approver'] 包含什么?
  • $body['apporver'] 包含:“[{'mst_mail_group_id':1},{'mst_mail_group_id':4}]”
  • “错误在线” - 这是什么意思?您面临哪种错误?您尝试过什么解决方法?该错误与 Postman 有何关系?

标签: php json laravel postman


【解决方案1】:

您可能会收到错误消息,因为您尝试在 json 对象上使用 str replace。

试试这个:

$approval_template_body->approver = str_replace("'", '"', (string) $body['approver']);

【讨论】:

  • 谢谢大佬的帮助,我找到了解决办法,解决办法是:$approval_template_body->approver = json_encode(str_replace("'", '"', $body['approver']));
  • 我很高兴你能解决它!您可以在下面发布您自己的答案。
【解决方案2】:

谢谢大佬帮忙,我已经找到解决办法了,解决办法是:

$approval_template_body->approver   = json_encode(str_replace("'", '"', $body['approver'])); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多