如何在 Laravel 中接收单引号 JSON

Posted

技术标签:

【中文标题】如何在 Laravel 中接收单引号 JSON【英文标题】:How to receive single quote JSON in Laravel 【发布时间】:2018-05-23 19:24:54 【问题描述】:

我正在编写一个 API 来使用来自另一个 3rd 方应用程序 (RapidPro) 的数据。可悲的是,第三方应用程序将其 JSon 用单引号括起来,Laravel 似乎无法理解,当我返回 $request 对象时,我得到一个空数组 []。

有什么办法可以接受带有单引号的 JSon,因为我不可能更改第三方 API?

要解析的 JSon 是这个:


    'contact': 
        'uuid': 'e65ef92b-24ce-459b-a8fd-beb042330eb0',
        'name': 'UserName',
        'urn': 'tel: +12000000000'
    ,
    'flow': 
        'name': 'MyFlow',
        'uuid': 'da5d6c42-a818-481b-b91c-e9622dafe8be'
    ,
    'path': [],
    'results': ,
    'run': 
        'uuid': '2a2f709f-d114-413c-a865-d960cea73981',
        'created_on': '2018-05-23T19: 06: 03.308191+00: 00'
    ,
    'input': 
        'urn': 'tel: +12000000100',
        'text': 'What I wanna say',
        'attachments': []
    

我在接收 API 调用时使用以下路由,它可以工作并将其带到控制器:

Route::post('sms', 'UserController@sms')->name('sms.store');

此演示的 SMS 控制器让我们将其写入本地文件并将结果发回以在 Insomnia 中查看演示调用:

public function sms(Request $request)
    
        Storage::put('sms.txt', $request);
        return $request;

    

当我通过 Insomnia 将 JSON 发布到我的服务器时,我得到一个空响应,但是当我使用双引号时;发布的 JSON 被很好地退回。

【问题讨论】:

给他们看json.org @Kyslik 让他们遵守标准? 你能给我们看一些代码吗?单引号应该没有问题。 @GonrasKarols 让我编辑问题以添加路线和控制器。 【参考方案1】:

事实证明,在 RapidPro 调试器中,json 使用单引号显示,但在实际 POST 中它使用双引号。我错的是AUTH。我必须为 Laravel 的 Basic Once 身份验证添加一些标头。

【讨论】:

以上是关于如何在 Laravel 中接收单引号 JSON的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值

如何在json单引号中写入c#字符串

如何转义json字符串中的单引号? JSON::ParserError Ruby

如何将单引号 (') 捕获到 JSON.parse 的字符串中?

如何将我的序列化 JSON 字符串包装在“单引号”中

如何将带单引号的字符串转换为双引号以进行 json 解析