2012-05-10 20 views
1

FacebookアプリでTrialPay/Offerwall/Dealspotを実装しようとしています。そのdocumentationでは、彼らはあなたを送信することをJSONがどのように見えるかの例を与える:TrialPayコールバックで不正な形式のJSONを送信する

{"order_id":9006316682257,"buyer":409697,"app":107032282669135,"receiver":409697, 
"amount":1,"time_placed":1322622026,"update_time":1322622027,"data":"", 
"items":[{"item_id":"0","title":"3 Fred Currency","description":"Make it rain!", 
"image_url":"http:\/\/external.ak.fbcdn.net\/safe_image.php?d=AQDldsPcWsejAJdC&url=http\u00253A\u00252F\u00252Fwww.etftrends.com\u00252Fwp-content\u00252Fuploads\u00252F2011\u00252F10\u00252Fcurrency-trading.jpg", 
"product_url":"","price":1,"data":"{\"modified\":{\"product\":\"URL_TO_APP_CURR_WEBPAGE\", 
\"product_title\":\"Fred Currency\",\"product_amount\":3,\"credits_amount\":1}}"}],"status":"placed"} 

あなたはこの取得する必要配列としてそれをjson_decodeなら、彼らは言う:

Array (
    [order_id] => 9006316682257 
    [buyer] => 409697 
    [app] => 107032282669135 
    [receiver] => 409697 
    [amount] => 1 
    [time_placed] => 1322622026 
    [update_time] => 1322622027 
    [data] => 
    [items] => Array (
       [0] => Array (
         [item_id] => 0 
         [title] => 3 Fred Currency 
         [description] => Make it rain! 
         [image_url] => http://external.ak.fbcdn.net/safe_image.php?d=AQDldsPcWsejAJdC&url=http%3A%2F%2Fwww.etftrends.com%2Fwp-content%2Fuploads%2F2011%2F10%2Fcurrency-trading.jpg 
         [product_url] => 
         [price] => 1 
         [data] => {"modified":{"product":"URL_TO_APP_CURR_WEBPAGE","product_title":"Fred Currency","product_amount":3,"credits_amount":1}} 
        ) 
      ) 
    [status] => placed 
) 

それはしませんがしかし、データは実際には次のようになります。

[data] => "{"modified":{"product":"URL_TO_APP_CURR_WEBPAGE","product_title":"Fred Currency","product_amount":3,"credits_amount":1}}" 

文字列の中であることJSONは、それが無効でJSONであることを引き起こしています。それらの引用符を削除する簡単な方法はありますか?

答えて

0

開発。私たちのドキュメントサイトにはタイプミスがあるかもしれません。私はメモを送ってそれを再確認します。

一方、アプリ内通貨のクーポンベースの注文完了時にFacebookがコールバックに渡している実際のJSONが有効であり、希望の結果に正しくデコードすることを確認しました上記。

このスレッドの範囲外の問題が発生した場合は、私に直接pingを送信してください。

編集:

あなたのコードをコピーしてJSONLintに対して検証した後、私はあなたが言及した時点で、すぐに問題が発生しました。しかし、\"product_title\"の前に悪い改行を削除した後、正しく検証することができました。例PHPは、以下に含まスニペット:

<?php 

$order_details = '{"order_id":9006316682257,"buyer":409697,"app":107032282669135,"receiver":409697,"amount":1,"time_placed":1322622026,"update_time":1322622027,"data":"","items":[{"item_id":"0","title":"3 Fred Currency","description":"Make it rain!","image_url":"http:\/\/external.ak.fbcdn.net\/safe_image.php?d=AQDldsPcWsejAJdC&url=http\u00253A\u00252F\u00252Fwww.etftrends.com\u00252Fwp-content\u00252Fuploads\u00252F2011\u00252F10\u00252Fcurrency-trading.jpg","product_url":"","price":1,"data":"{\"modified\":{\"product\":\"URL_TO_APP_CURR_WEBPAGE\",\"product_title\":\"Fred Currency\",\"product_amount\":3,\"credits_amount\":1}}"}],"status":"placed"}'; 
$order_details_decoded = json_decode($order_details, true); 
$order_details_decoded['items'][0]['data'] = json_decode($order_details_decoded['items'][0]['data'], true); 
print_r($order_details_decoded); 

は、私が何かは、このスレッドの範囲外で起動した場合、直接私にpingを送信すること自由に感じ、早期に述べたように。

+0

ありがとうございました。私はあなたのものと比較してFBから私に送信された応答を見て、Robは私にあなたのものではない追加のバックスラッシュがあるようです。具体的な事例をお送りしたい場合は、お問い合わせの方法がありますか? – keybored

0

json_decode($json_string, true);を連想配列に変換しようとしましたか?

+0

json_decodeは、JSONが無効な場合(およびオペレーションの投稿ごとに) – Madbreaks

+0

私の間違い私は彼が配列フラグを欠いていて、オブジェクトを取得していて、配列を期待していると思った。 – Danny

2

まず、Trialpayのサイトでアプリの設定を完了する必要があるようです(URL_TO_APP_CURR_WEBPAGE)。ここでの問題は、に必要な範囲でアプリの設定を完了していないことがあり、有効なJSONを生成している可能性があります。

しかし、それでも答えが得られない場合は、無効なJSON(引き続き無効です)が表示された場合は、Trialpayの担当者に連絡することをおすすめします。彼らは通常かなり反応があり、私たちはゲーム開発中にその製品でいくつかの問題を発見しました。

幸運 - もしあなたが詳細を見つけたらここに投稿してください。ここTrialPay

乾杯

関連する問題