IMO ist Zeile 1 der richtige Ansatz. Wenn das nicht funktioniert, würde ich vermuten, dass die Syntax des JSON fehlerhaft ist.
Allerdings verstehe ich den Hintergrund nicht ganz: Wenn die Daten aus der DB geholt werden, muss es doch ein PHP-Skript geben, das das tut und Du musst dann das JSON, das mit echo ausgegeben wird, mit Ajax laden? Wenn dem so ist, besteht clientseitig gar kein Unterschied, sowohl das Lesen aus der Datei als auch das Aufrufen des PHP-Skripts liefert den JSON-String.