最近我一直在尝试更多地了解api,所以当我遇到一个新的时候我喜欢看一下它。我最近发现的一个对我来说有点奇怪。我经常在很多api上看到普通的json,但这个有点不同。我不确定它是否只是糟糕的设计,或者他们是否有充分的理由让答案成为他们的方式。以下是输出结果的示例。
示例:
var List = {
'DATA': {
'RESULT': '1',
'CONFIG': [{
'value1': '123',
'value2': 'example',
'value3': '456',
'value4': 'text'
}
],
'INFO': [{
"value1": "123",
"value2": "example",
"value3": "456",
"value4": "text",
"value5": "example2",
"value6": "789",
"value7": "text2"
}, {
"value1": "123",
"value2": "example",
"value3": "456",
"value4": "text",
"value5": "example2",
"value6": "789",
"value7": "text2"
}, {
"value1": "123",
"value2": "example",
"value3": "456",
"value4": "text",
"value5": "example2",
"value6": "789",
"value7": "text2"
}, {
"value1": "123",
"value2": "example",
"value3": "456",
"value4": "text",
"value5": "example2",
"value6": "789",
"value7": "text2"
}, {
"value1": "123",
"value2": "example",
"value3": "456",
"value4": "text",
"value5": "example2",
"value6": "789",
"value7": "text2"
}
]
}
};
这通常是我通常用于获取json响应的内容。
$url = "http://example.com/endpoint";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0)Gecko/20100101 Firefox/53.0',
'Accept-Encoding: gzip, deflate',
'Cache-Control: no-cache'
));
curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($ch, CURLINFO_HEADER_OUT, FALSE);
$json_response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
$result = json_decode($json_response, true);
foreach ($result as $info) {
}
上面不会输出任何内容,因为它是一个字符串,所以我尝试改变:
$json_response = curl_exec($ch);
到
$json_response = substr(curl_exec($ch), strpos(curl_exec($ch), "{"));
然后用
打印print_r($json_response);
这给了我整个回复,但我想知道如何通过循环实际运行它来获取各个值,就像我通常用普通json做的那样。
我已经尝试了剥离开头的组合,将单引号转换为双引号,使用explode将其转换为数组并使用json_encode和json_decode等,但我无法弄清楚要做什么才能运行它并获得个人价值观。
如果有人有任何关于如何实现这一目标的建议或例子,我将不胜感激。如果我再次碰到这样的事情并且实际上想要用它做一些事情,那将是很好的。感谢。