2017-02-20 73 views
1

我有看起來像這樣的解碼無效JSON在PHP

USER SAVED IN DB.{"user":{"_token":"9ylCAviuuCaNlCtXNya5pEXkY8vkJepZAohsG5VI","submit":"engageiq_post_data","affiliate_id":"","campaign_id":"","offer_id":"","s1":"","s2":"","s3":"","s4":"","s5":"","address":"","phone1":"","phone2":"","phone3":"","phone":"","source_url":"http:\/\/pfr_laravel.dev\/registration","ip":"192.168.10.1","screen_view":"1","first_name":"fff","last_name":"ff","email":"[email protected]","zip":"00501","birthdate":"","dobmonth":"04","dobday":"12","dobyear":"1965","gender":"M","chk_agree":"","submitBtn":"Submit","state":"NY","city":"Holtsville","revenue_tracker_id":1},"revenue_tracker_id":1,"path_type":2,"campaigns":[[1,15,25,48,38,23,44],[245],[249],[27,4,19,181,18],[16],[246],[51,52,151],[10],[26,2,185,180,45,184,182]],"creatives":[]} 

外部源的無效JSON的回報,如果我試圖解碼

json_decode($myjson, true) 

我只希望path_type這將返回null項並將其值

所以在我的代碼,我需要這個

if (path_type == 2){} 

有什麼建議嗎?

+0

難道這_USER保存在DB._應該在那裏? – MrDarkLynx

+0

是的。我認爲這是結果的原因null –

+0

那就是無效的JSON。你必須以'{「user」開頭:'... – MrDarkLynx

回答

0

首先你想從你的JSON中去掉不必要的字符串。
然後要解碼JSON存儲在一個變量,並檢查PATH類型:

$myjson = substr($myjson, 17); // remove bulk from JSON 

$data = json_decode($myjson, true); 

if ($data['path_type'] == 2) { 
    // code 
} 
1

擴大對@ MrDarkLynx的答案我會用這個表達式: ^(.+?){"user" 使用正則表達式{"user"之前刪除一切,一定要只刪除第一個捕獲的組。

您現在有可以使用有效的JSON =)

+0

我認爲這是更好的解決方案,但現在我使用MrDarkLynx答案,因爲它爲我工作。 –