2014-02-10 72 views
0

返回由MongoDB中我得到了一個任務,去從JSON文件中找出ER這是一個創紀錄的閱讀的Json在PHP

{ "__v" : 0, "_id" : ObjectId("52210bf6880b9f0200000003"), "email" : "", "emailFrequency" : "instant", "feedbackRating" : 0, "field_aboutMe" : "On Fridays I like to eat apples.", "field_contact" : "[email protected]", "field_intro" : "Sparkboard bug-fixer. Co-founded Hacking Health, Bodo Wellness, and BrainTripping.", "first_time" : false, "hash" : "", "name" : "Matt Huebert", "picture" : "https://www.ssss.com", "ready" : true, "roles" : [ "admin" ], "email" : "", "tags" : [ "Developer", "Designer", "Mentor" ], "updatedAt" : Date(1384115378947), "votesByDomain" : { "sadsard-com" : "525eadf50f13910200000004" } } 

搜索,我發現它是與MongoDB中後。我需要解析這些數據以找出其中的實體。當我檢查它的驗證它不是一個有效的JSON,因爲它是由mongo db生成的。 請任何身體有任何想法?

我用盡這也

$data = file_get_contents('json/users.json'); 
bson_decode($data); 

試圖json_decode以及其還沒有工作,返回NULL

我得到這個錯誤,而試圖bson_decode

致命錯誤:未捕獲的異常「MongoException '消息'類型0x5f不支持

+2

應該是'json_decode'。這是一個錯字。 – Rikesh

+0

jsond_decode不能正常工作,並返回null ....因爲這不是一個普通的json文件,我也試過這個 –

+0

這不是JSON,但BSON所以json_decode永遠不會工作。 – Martin

回答

1

不知道是什麼把這個轉儲到你的json文件中,可能是從mongo shell的標準輸出,但是這部分的問題是:

ObjectId("52210bf6880b9f0200000003") 

您需要拆除包裝「的ObjectId(」閉括號「)」,以使每一行有效的JSON。一旦過濾了,你就剩下有效的JSON。

如果您知道誰向您提供這些文件,並且無法直接使用mongodb數據源,那麼請他們請使用mongoexport,它至少會從一開始就爲您提供有效的JSON。

+0

與Date(「」)相同的東西。這是無效的JSON。這看起來像MongoDB shell使用的「擴展json」。混合擴展的JSON,JSON和BSON在這裏都是一團糟...... :)使用mongoexport進入json並使用json_decode(),就像Neil所建議的那樣,這會讓事情變得更簡單 – bjori