0

外部 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);
?>
4

1 に答える 1

1

あなたのラッパークラスは次のように聞こえます

 function wrapper($data) {
     $json = file_get_contents("http://.......");
     $obj = json_decode($json);

     //process your reconstruction consuming $obj

     return json_encode($obj); //or a new object that you transformed $obj 

 }

次に、メインアプリケーションから呼び出すことができます

 $data = wrapper($data);
 $obj = json_decode($data);
于 2013-06-24T08:56:13.363 に答える