PHP lendo json inválido com json_decode ();
Eu tenho dados json externos inválidos, sem aspas duplas em torno dos nomes.
Exemplo:
{
data: [
{
idx: 0,
id: "0",
url: "http://247wallst.com/",
a: [
{
t: "Title",
u: "http://247wallst.com/2012/07/30/",
sp: "About"
}
],
doc_id: "9386093612452939480"
},
{
idx: 1,
id: "-1"
}
],
results_per_page: 10,
total_number_of_news: 76,
news_per_month: [20, 0, 8, 1, 1, 2, 0, 2, 1, 0, 0, 1, 1, 0, 5, 1, 1, 1, 0, 2, 5, 16, 7, 1],
result_start_num: 2,
result_end_num: 2,
result_total_articles: 76
}
Como você vê muitos nomes como dados, idx, id, url e outros não são citados em duplicidade, então isso torna este json inválido. Como posso tornar este json externo válido? Eu já tentei str_replace, substituindo '{' para '{"' e ':' para '":' adicionando aspas duplas em torno dos nomes sem aspas, mas isso atrapalha algumas variáveis duplas já citadas.
Como posso fazer este json válido para que eu possa ler esses dados com o PHP json_decode? Eu não estou muito familiarizado com preg_replace ..
Json válido será parecido com:
{
"data": [
{
"idx": 0,
"id": "0",
"url": "http://247wallst.com/",
"a": [
{
"t": "Title",
"u": "http://247wallst.com/2012/07/30/",
"sp": "About"
}
],
"doc_id": "9386093612452939480"
},
{
"idx": 1,
"id": "-1"
}
],
"results_per_page": 10,
"total_number_of_news": 76,
"news_per_month": [20, 0, 8, 1, 1, 2, 0, 2, 1, 0, 0, 1, 1, 0, 5, 1, 1, 1, 0, 2, 5, 16, 7, 1],
"result_start_num": 2,
"result_end_num": 2,
"result_total_articles": 76
}
Por favor me sugerir alguma função preg_replace php.
Fonte de dados:http://www.google.com/finance/company_news?q=aapl&output=json&start=1&num=1