PHP liest ungültigen json mit json_decode ();

Ich habe ungültige externe JSON-Daten, ohne Anführungszeichen um Namen.

Beispiel:

{
  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
}

Wie Sie sehen, werden viele Namen wie data, idx, id, url und andere nicht in doppelte Anführungszeichen gesetzt. Dies macht diesen json ungültig. Wie kann ich diesen externen JSON-Code gültig machen? Ich habe bereits versucht, str_replace durch '{' zu '{"' und ':' zu '":' zu ersetzen, indem doppelte Anführungszeichen um nicht zitierte Namen eingefügt wurden, aber dies bringt einige bereits doppelte Anführungszeichen durcheinander.

Wie kann ich diesen json gültig machen, damit ich diese Daten mit PHP json_decode lesen kann? Ich bin nicht sehr vertraut mit preg_replace ..

Gültiger JSON sieht folgendermaßen aus:

{
  "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
}

Bitte schlagen Sie mir eine PHP-Funktion preg_replace vor.

Datenquelle:http://www.google.com/finance/company_news?q=aapl&output=json&start=1&num=1

Antworten auf die Frage(2)

Ihre Antwort auf die Frage