我可以从字符串变量中提取数组:
HTTP/1.1 200 OK
Server: YYYYYYYYY
Content-Type: application/json
Content-Length: 163
X-OAPI-Request-Id: XXXXXXXXXXXXXX
{
"token_type": "berber",
"access_token": "XXXXXXXXYYYYYYY",
"expires_in": "7776000"
}
我想用token_type,access_token,expires_in。
获取数组答案 0 :(得分:5)
这是一种json,所以你可以修剪掉不是json的部分并使用json_decode对其进行解码。
$arr = json_decode(substr($str,strpos($str,"{")), true);
Var_dump($arr);
这里我从“{”发送到字符串的结尾到json_decode,返回:
https://3v4l.org/r8VgO
答案 1 :(得分:1)
您可以编写小字符串切割器,然后将其转换为json
const str = `HTTP/1.1 200 OK
Server: YYYYYYYYY
Content-Type: application/json
Content-Length: 163
X-OAPI-Request-Id: XXXXXXXXXXXXXX
{
"token_type": "berber",
"access_token": "XXXXXXXXYYYYYYY",
"expires_in": "7776000"
}`;
let result = str.substring(str.indexOf('{'), str.indexOf('}') + 1);
result = JSON.parse(result);
console.log(result);
console.log(result.token_type)
答案 2 :(得分:1)
以下是您从外部网站加载内容的示例:
<?php
$page = file_get_contents( "http://urlyouused" );
$array = json_decode( $page, true );
print_r( $array);
?>
file_get_contents将加载显示结果的网页并放入内容。 json_decode会将JSON对象正常解码为对象。但是使用'true'标志,它将输出一个数组而不是一个对象。
这篇文章都标记了PHP和Javascript,因此这将是PHP的解决方案。我想有人发布了Javascript的答案。
修改强>
关于以字符串开头,帖子发生了变化或我误读(最有可能)。如果您从字符串开始,这是一个可能的解决方案:
preg_match( "#(\{.*\})#is", $string, $results );
$array = json_decode( $results[0], true );
print_r( $array );
使用preg_match获取JSON对象。需要s标志,以便返回的行不会结束搜索。基本上它试图捕获大括号内的任何内容以及构成JSON对象的括号本身。 json_decode中的true标志再次返回一个数组而不是一个对象。