【问题标题】:How to deserialize data in PHP which is serialized by GSON如何反序列化由 GSON 序列化的 PHP 中的数据
【发布时间】:2021-05-15 10:26:00
【问题描述】:

我正在使用PHP 开发的 api 开发 android 应用程序。我正在尝试将一个对象发送到 api,因此我使用Gson 库对其进行序列化,并尝试使用Unserialize() 函数在PHP 代码中反序列化。但是,它给出的错误为(!)Notice: unserialize(): Error at offset 0 of 468 bytes in C:\wamp64\www\digiclass\admin\api\upload_pending_results.php on line 5,最后给出的json响应为{"error":false,"data":false}这是我的PHP代码:

<?php
//an array to display response
$response = array();
$serObject = $_POST['serObject'];
$response['error'] = false;
$response['data'] = unserialize($serObject);
echo json_encode($response);
?>

目前,我没有对数据执行任何操作,只想查看数据是否正确反序列化。我试过看序列化的对象,转换如下。

%7B%22accessToken%22%3A%22b2c1f3d5e8218cfa81d23c4b9b7d6cbc20f82c67ca4b9d92be9bb7680031360a9d95bf1e3ecf42678f1c8b87a4eb5622%22%2C%22clas%22%3A%229%22%2C%22dbname%22%3A%22a_new%22%2C%22records%22%3A%5B%7B%22clas%22%3A%229%22%2C%22id%22%3A1%2C%22marks%22%3A%222%2F8%22%2C%22rollno%22%3A%2212%22%2C%22subject%22%3A%22Maths%22%2C%22temp%22%3A1%7D%2C%7B%22clas%22%3A%229%22%2C%22id%22%3A1%2C%22marks%22%3A%227%2F8%22%2C%22rollno%22%3A%2212%22%2C%22subject%22%3A%22Maths%22%2C%22temp%22%3A2%7D%2C%7B%22clas%22%3A%229%22%2C%22id%22%3A1%2C%22marks%22%3A%223%2F8%22%2C%22rollno%22%3A%2212%22%2C%22subject%22%3A%22Maths%22%2C%22temp%22%3A3%7D%2C%7B%22clas%22%3A%229%22%2C%22id%22%3A1%2C%22marks%22%3A%228%2F8%22%2C%22rollno%22%3A%2212%22%2C%22subject%22%3A%22Maths%22%2C%22temp%22%3A4%7D%5D%2C%22rollno%22%3A%2212%22%7D

我不确定转换是否正确或错误可能是什么。有人可以帮忙吗?

【问题讨论】:

    标签: php android gson


    【解决方案1】:

    你得到的值是一个 URL 编码的 JSON 字符串,所以首先解码它...

    $serObject = urldecode($serObject);
    

    然后将其解码为 JSON...

    $response['data'] = json_decode($serObject, true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多