1

PHP ページから MySQL データベースの結果を REST サービスとして取得する Windows 8 ストア アプリを作成しようとしています。

文字列の配列の JSON 表現を返す PHP を探していますが、Javascript と PHP の間で同じことを行うと、うまくいきました。その同じ JSON 文字列を取得して、C# Windows 8 ストア アプリで使用する必要があります。その PHP ページの戻り値を取得して、辞書やより複雑なコレクションではなく、通常の C# 配列に変換する方法はありますか?

データベースには 4 つのフィールドがあるため、このために作成された特別なオブジェクトを使用する必要がある場合は使用しますが、この関数はその量のデータを必要としないため、使用しませんでした。

PHP ページは次のようになります。$search_text は GET 経由で渡されます。

$databaseConnection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($databaseConnection->connect_error)
    {
        echo "Database connection failed: $databaseConnection->connect_error";
    }
    else
    {
        $search_text = $search_text."%";
        $query = "SELECT DISTINCT street FROM gritroutes WHERE street LIKE ? LIMIT 5";
        $statement = $databaseConnection->prepare($query);
        $statement->bind_param('s', $search_text);
        $statement->execute();
        $statement->store_result();
        $statement->bind_result($street);
        $autonumber = 1;
         while ($statement->fetch())
         {          
             $resultarr[] = $street;
         }
         $statement->close();
         echo json_encode($resultarr);
    }

ただ明確にします。Windows ストア アプリを作成していますが、System.Web 名前空間が利用できないため、JavaScriptSerializer を使用できません。

4

3 に答える 3

3

マシューの答えに追加するだけで、Json.NETを使用して逆シリアル化できます ( NuGetから取得できます)。次のようにします。

List<string> myStrings = JsonConvert.DeserializeObject<List<string>>(myJson);

これは次の場所にあります。

using Newtonsoft.Json;

実際の例については、この記事を参照してください。

編集- このリンク も追加したいと思います。これは素晴らしいことです。

これが役立つことを願っています。

于 2013-05-22T02:40:40.037 に答える
0

ネイティブWindows.Data.Jsonクラスを使用して解析を行うこともできます。

string json = @"[""item1"", ""item2"", ""item3""]";
var array = JsonArray.Parse(json).Select(i => i.GetString()).ToArray();
于 2013-05-22T05:05:21.883 に答える
0

JavaScriptSerializerクラスを見てください。

string myJson = "{blablabla I'm json}";
var serializer = new JavaScriptSerializer();

var myStrings = serializer.Deserialize<List<string>>(myJson);

foreach (var str in myString)
{
    Console.WriteLine(str);
}
于 2013-05-22T00:43:47.377 に答える