json_decode 解析不了数据

mahuatengBC 2017-08-11 09:45:49


代码大概如下,是通过流方式获取的json

string(342) "{"amount":1,"payChnl":"bank","orderNo":"15023608033500010018","signature":"b70f8689e00cbb2df9c943574ed6ade6","subject":"充值","openId":"","fee":0,"description":"","body":"充值","paidTime":1502360832854,"paySt":2,"orderDt":"20170810","appid":"0000005025","extra":"","mchntId":"0000002087","mchntOrderNo":"fd943fdd9d0e45c088a83c9b8a6d27d9"}"


dump 出来的数据是这样的,但是使用json_decode函数之后,一直返回空?

试过编码问题,还是不行,不知道哪里出了问题。求大神解答
...全文
865 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
javajun 2018-05-02
  • 打赏
  • 举报
回复
直接 用 $result = json_decode(file_get_contents("选择读取文件的路径")) 这个 方法 试试 ~ 不要用 变量 接收 file_get_contents("") 的结果 在用 json_decode 转换, /*$res = file_get_contents(""); $resulet = json_decode($res);*/ 这个直接 合并 成 $result = json_decode(file_get_contents("选择读取文件的路径")); 试试~~
mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复
mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复


试了三种方法,

打印出来的分别是这样的


mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复
我就问 ,我json_decode 返回空,该怎么解释
xuzuning 2017-08-11
  • 打赏
  • 举报
回复
$s = 'eyJhbW91bnQiOjEsInBheUNobmwiOiJiYW5rIiwib3JkZXJObyI6IjE1MDI0MjE4Nzg1MzMwMDEwMTc3Iiwic2lnbmF0dXJlIjoiMDdkYzdjMmVhNDVhMmVmNDJlOGI1YTFhNDMyYTU3OWMiLCJzdWJqZWN0Ijoi5YWF5YC8Iiwib3BlbklkIjoiIiwiZmVlIjowLCJkZXNjcmlwdGlvbiI6IiIsImJvZHkiOiLlhYXlgLwiLCJwYWlkVGltZSI6MTUwMjQyMTkwODI2NCwicGF5U3QiOjIsIm9yZGVyRHQiOiIyMDE3MDgxMSIsImFwcGlkIjoiMDAwMDAwNTAyNSIsImV4dHJhIjoiIiwibWNobnRJZCI6IjAwMDAwMDIwODciLCJtY2hudE9yZGVyTm8iOiI4OWZlZjdmNjYxZTE0OTYxOTlhMTMxYjk5YTJkY2ZiMyJ9';
$s = base64_decode($s);
print_r(json_decode($s));

stdClass Object
(
    [amount] => 1
    [payChnl] => bank
    [orderNo] => 15024218785330010177
    [signature] => 07dc7c2ea45a2ef42e8b5a1a432a579c
    [subject] => 充值
    [openId] => 
    [fee] => 0
    [description] => 
    [body] => 充值
    [paidTime] => 1502421908264
    [paySt] => 2
    [orderDt] => 20170811
    [appid] => 0000005025
    [extra] => 
    [mchntId] => 0000002087
    [mchntOrderNo] => 89fef7f661e1496199a131b99a2dcfb3
)
并无任何问题,显然你是画蛇添足了
mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
echo base64_encode($res); 或先写到文件,贴出结果!
我打印了 base64_encode($res); 结果如下 eyJhbW91bnQiOjEsInBheUNobmwiOiJiYW5rIiwib3JkZXJObyI6IjE1MDI0MjE4Nzg1MzMwMDEwMTc3Iiwic2lnbmF0dXJlIjoiMDdkYzdjMmVhNDVhMmVmNDJlOGI1YTFhNDMyYTU3OWMiLCJzdWJqZWN0Ijoi5YWF5YC8Iiwib3BlbklkIjoiIiwiZmVlIjowLCJkZXNjcmlwdGlvbiI6IiIsImJvZHkiOiLlhYXlgLwiLCJwYWlkVGltZSI6MTUwMjQyMTkwODI2NCwicGF5U3QiOjIsIm9yZGVyRHQiOiIyMDE3MDgxMSIsImFwcGlkIjoiMDAwMDAwNTAyNSIsImV4dHJhIjoiIiwibWNobnRJZCI6IjAwMDAwMDIwODciLCJtY2hudE9yZGVyTm8iOiI4OWZlZjdmNjYxZTE0OTYxOTlhMTMxYjk5YTJkY2ZiMyJ9 这个能看出啥?
mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复
已经写入文件了啊,json也贴出来了。关键是json_decode 之后没有值
xuzuning 2017-08-11
  • 打赏
  • 举报
回复
echo base64_encode($res); 或先写到文件,贴出结果!
一起混吧 2017-08-11
  • 打赏
  • 举报
回复
json_decode 只支持utf-8编码,所以检查一下编码,还要确认无bom头
mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复
现在是没有返回值,不是返回对象,还是数组的问题啊,是没有返回值啊!!!
mahuatengBC 2017-08-11
  • 打赏
  • 举报
回复
我把打印出来的json 用json格式化,也没问题啊,但是用json_decode 就不行啊。可能会是什么情况? 有bom头?
fruitlin 2017-08-11
  • 打赏
  • 举报
回复
json_decode() 第二个 参数 为 true 才会返回数组
一起混吧 2017-08-11
  • 打赏
  • 举报
回复
$s = '{"amount":1,"payChnl":"bank","orderNo":"15023608033500010018","signature":"b70f8689e00cbb2df9c943574ed6ade6","subject":"充值","openId":"","fee":0,"description":"","body":"充值","paidTime":1502360832854,"paySt":2,"orderDt":"20170810","appid":"0000005025","extra":"","mchntId":"0000002087","mchntOrderNo":"fd943fdd9d0e45c088a83c9b8a6d27d9"}';
print_r(json_decode($s, true));
Array ( [amount] => 1 [payChnl] => bank [orderNo] => 15023608033500010018 [signature] => b70f8689e00cbb2df9c943574ed6ade6 [subject] => 充值 [openId] => [fee] => 0 [description] => [body] => 充值 [paidTime] => 1502360832854 [paySt] => 2 [orderDt] => 20170810 [appid] => 0000005025 [extra] => [mchntId] => 0000002087 [mchntOrderNo] => fd943fdd9d0e45c088a83c9b8a6d27d9 )
u014567183 2017-08-11
  • 打赏
  • 举报
回复
根据你贴的json,没问题。
hongmei85 2017-08-11
  • 打赏
  • 举报
回复
估计问题出在ob_get_clean \ob_end_clean,这两函数把字符都搞没了, $result2 = ob_get_clean(),是ob_get_clean把字符搞没的 $result = json_encode($res)才是正常结果,别把几个变量$result、$result2、$res看花眼了
xuzuning 2017-08-11
  • 打赏
  • 举报
回复
不知道你要干什么?那些截图只表示你不知道如何将数组的字面表示保存到文件中去 print_r 和 var_export 的第二个参数为 true 时,返回的就是数组格式化后的字符串

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧