2011-10-27 17 views
2

私は、財産に関する情報を保存するAPIのためにPHPでJSONパーサーをやっています。私は、配列やオブジェクトの代わりにNULLのvualueを返すので、解析に問題が生じています。シンプルなJSONコードはうまく解析されますが、これをされていますJson to php、json_decodeがNULLを返します

{"success":true,"totalCount":1,"data":[{"id":996944,"listingId":"2/2089/OMW","mlsId":null,"swoId":null,"sectionName":"ApartmentRental","geoLat":50.06442971278027,"geoLng":19.953176730749647,"country":{"id":34,"name":"Polska","code":"PL"},"location":{"id":42955,"name":"/Małopolskie/Kraków/Kraków-Śródmieście","province":"Małopolskie","locality":"Kraków","quarter":"Kraków-Śródmieście"},"street":{"id":138781,"name":"Hugona Kołłątaja","fullName":"ul. Hugona Kołłątaja"},"foreignStreet":null,"foreignLocation":null,"contractType":"Exclusive","ownershipType":"Mortgage","groundOwnershipType":null,"isSpecial":true,"price":{"amount":2700,"currency":"PLN"},"priceBeforeReduction":null,"dateCreated":"2011-10-22 20:32:35","lastUpdated":"2011-10-25 11:51:09","actualisationDate":"2011-10-22 20:32:34","statusChangeDate":"2011-10-22 20:32:34","images":[{"id":6514430},{"id":6514431},{"id":6514432},{"id":6514433},{"id":6514434},{"id":6514435},{"id":6514436},{"id":6514437},{"id":6514438},{"id":6514439},{"id":6514440},{"id":6514441},{"id":6514442},{"id":6514443}],"licenceNumber":null,"description":"Do wynajęcia piękne, przestronne mieszkanie w wysokim standardzie, świeżo po remoncie przy ulicy Hugona Kołłątaja w Krakowie. Znajduje się w bardzo pięknej z zewnątrz i wewnątrz kamienicy. Bardzo dobra komunikacja, duża powierzchnia 85m2 i wysoki standard wykończenia dają poczucie komfortu. Bardzo blisko Rynku Głównego, Hali Targowej i Galerii Kazimierz. Dzięki bardzo dobrze rozwiniętej komunikacji miejskiej możliwość szybkiego dostania się w każde miejsce Krakowa. Blisko wiele punktów handlowych i usługowych.\n\nMieszkanie składa się 3 odzielnych pokoi, przedpokoju, kuchni oraz 2 łazienek i balkonu. Jest możlwość umeblowania mieszkania według Państwa preferencji na koszt Właściciela. Ogrzewanie własne samodzielne. Możliwość podłączenia Internetu i telefonu.\n\n","englishDescription":null,"russianDescription":null,"parentListingId":null,"totalArea":85,"priceM2":{"amount":31.76,"currency":"PLN"},"noOfFloors":null,"floorNo":null,"furnished":true,"auctionStartingPrice":null,"auctionFrom":null,"auctionTo":null,"openDaysFrom":null,"openDaysTo":null}]} 

私が取得:NULLは

http://json.parser.online.fr/のようなオンラインパーサは仕事がうまくやっているが。

私はphp組み込み機能json_decodeを使用していましたが、php.netのものよりもユーザーが行っていました。

$url="url_to_json"; 
$str=file_get_contents($url); 
$str = substr($str, 1, strlen($str) - 2); 
$str = preg_replace("/([a-zA-Z0-9_]+?):/" , "\"$1\":", $str); 
$new=(json_decode($new, true)); 
var_dump($new); 

任意のアイデア:

は、ここに私のPHPコードですか?

+2

理由だけではなく、まっすぐに、ファイルの内容に ')(' json_decodeを使わないのでしょうか?他のコードとは何ですか? – alex

+0

名前のユニコード文字(Małopolskie/Kraków/Kraków-Śródmieście)が原因です。 json_last_error()はJSON_ERROR_UTF8を返します。質問への答えではありませんが、これが助けてくれることを願っています。 –

+0

@Darhazer、あなたが参照している値ではありませんか? –

答えて

4

生のJSONデータにjson_decode();を使用してください。有効なJSONであれば、これにスムーズにアクセスできるように特別なコードは必要ありません。

戻り値を配列としてアクセスします。

$arr = json_decode(file_get_contents($json)); 
+0

返事ありがとう、奇妙なことに私は試していなかった唯一のものでした。 – PiotrC

2

使用この:

$new = json_decode($str , true); 
8

同じJSON文字列は、他のオンラインパーサで解析されている場合は、文字エンコーディングの問題を持っている、はutf8_encodeと以前に文字列を変換しよう:

$new=(json_decode(utf8_encode($str), true)); 

json_decodeで説明されているように:

デコードされているjson文字列。

この関数は、UTF-8エンコードされたデータでのみ機能します。

+1

答えを訂正してから-1を+1に変更しましたが、@ PietrCが間違った変数を使用していたことを明確にする必要があります。 – Stijn

+0

これは私の問題を解決しました+1 –

+1

これは最高の答えですが、utf-8以外の文字はjson_decodeを破っていて、var_dumpはNULLを表示していました。 – AMB

0

$json_a = json_decode($string, true);あなたは、コードの下に使用できるようにnull値を返します:

$json_a = json_decode(utf8_encode($string), true);