外部 Web サイトから JSON データを取得する必要がある WP7 アプリを作成しています。ただし、多くの理由から、JSON をアプリから直接解析したくありません。その 1 つは、返されるデータが常に一貫しているとは限らないことです。
この問題を解決するために、自分の知っている言語 (JavaScript、PHP、RoR が望ましい) で独自のサービスを作成し、このデータを一貫した形式で返したいと考えています。元の URL にリクエストを送信する代わりに、データを返すサービスにリクエストを送信できるようにしたいと考えています。
元のソースから最新の JSON を返すようなサービスを作成する方法がわかりません。情報は刻一刻と変化し続けるため、ページを静的にレンダリングして毎日更新することはできません。私の WP7 アプリケーションのユーザーがデータを見ようとするたびに、データをポーリングする必要があります。
ご指導ありがとうございました。
DevZer0 の編集:
echo $data
印刷するだけArray
echo json_encode($data)
私にこれを与える:
{
"stream": [
[
"</td>BeyondTheSummit</td>13751</td></tr>"
],
[
"</td>WagamamaTV</td>2653</td></tr>"
],
[
"</td>VeRsuta</td>1566</td></tr>"
],
[
"</td>dubasTV</td>1128</td></tr>"
],
[
"</td>followJotM</td>733</td></tr>"
],
[
"</td>EternaLEnVyy</td>532</td></tr>"
],
[
"</td>InozemeC</td>448</td></tr>"
],
[
"</td>liquidkorok</td>295</td></tr>"
],
[
"</td>DotaTalkStream</td>279</td></tr>"
],
[
"</td>Sheever</td>260</td></tr>"
],
[
"</td>Weppas</td>215</td></tr>"
],
[
"</td>BeyondTheSummit2</td>93</td></tr>"
],
[
"</td>dota2russia</td>56</td></tr>"
],
[
"</td>PMSyanyan</td>54</td></tr>"
]
],
"vod": [
[
"</span></td>GosuCup Asia VII: Zenith vs Dreamz /w ..</td>8</td></tr>"
],
[
"</span></td>Dota 2 Dire Overlord Announcer Pack (W..</td>301</td></tr>"
],
[
"</span></td>Dota 2 Purge plays Drow Ranger</td>9348</td></tr>"
],
[
"</span></td>Typical Mistakes vs eL'Pride BigPoi..</td>1184</td></tr>"
],
[
"</span></td>Team Empire vs Oslik Gaming BigPoin..</td>1162</td></tr>"
],
[
"</span></td>Dota 2 Bottom 10 - Ep. 1 (Pilot - Reje..</td>73888</td></tr>"
],
[
"</span></td>iCCup vs Next kz BigPoint Battle ..</td>631</td></tr>"
],
[
"</span></td>eL'Pride vs RoX KIS BigPoint Battle..</td>712</td></tr>"
],
[
"</span></td>Fnatic EU vs Artyk Gaming Game 1 Big..</td>2155</td></tr>"
],
[
"</span></td>Fnatic EU vs Artyk Gaming Game 2 Big..</td>1668</td></tr>"
],
[
"</span></td>Fnatic EU vs Lions Pride Bigpoint Ba..</td>988</td></tr>"
],
[
"</span></td>Artyk Gaming vs iCCup Bigpoint Battl..</td>666</td></tr>"
],
[
"</span></td>GosuCup Asia VII: Zenith vs Mineski</td>316</td></tr>"
],
[
"</span></td>Orange eSports' 'Net' - Amazing Rubick..</td>5868</td></tr>"
],
[
"</span></td>DotA2 - Outshine Vol.3</td>18672</td></tr>"
]
],
"dota2vods": [
[
"2w ago</td>Orange vs </span>Rising Stars</td>BO3</td></tr>"
],
[
"2w ago</td>KP vs </span>ICCup</td>BO1</td></tr>"
],
[
"2w ago</td>KP vs </span>Mouz</td>BO1</td></tr>"
],
[
"2w ago</td>Na'Vi vs </span>RoxKiS</td>BO1</td></tr>"
],
[
"2w ago</td>Power Rangers vs </span>Alliance</td>BO1</td></tr>"
],
[
"2w ago</td>LGD.INT vs </span>Orange</td>BO3</td></tr>"
],
[
"2w ago</td>OsG vs </span>Alliance</td>BO1</td></tr>"
],
[
"2w ago</td>zRage vs </span>KP</td>BO1</td></tr>"
],
[
"2w ago</td>Empire vs </span>Quantic</td>BO1</td></tr>"
],
[
"2w ago</td>Empire vs </span>TCM</td>BO1</td></tr>"
],
[
"3w ago</td>Empire vs </span>KP</td>BO1</td></tr>"
],
[
"3w ago</td>Quantic vs </span>TCM</td>BO1</td></tr>"
],
[
"3w ago</td>Empire vs </span>RoxKiS</td>BO1</td></tr>"
],
[
"3w ago</td>Mouz vs </span>ICCup</td>BO1</td></tr>"
],
[
"3w ago</td>4FC vs </span>Mouz</td>BO1</td></tr>"
]
]
}
この生データを JSONLint にコピーすると、JSON が有効であると表示されます。ただし、自分の URL (" http://blah.com/streams.php ") を入力すると、無効であると表示されます。JSONLint は、生データだけでなく、URL を検証することができることを知っています。
これが私の完全なPHPファイルです(streams.php):
<?php
header("Content-Type: application/json");
$url = "http://the-website-with-json";
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
return json_encode($data);
?>