4

HTTP リクエストを使用して、Google ショッピング API から JSON 文字列の内容を返そうとしています。これまでのところうまくいっているようですが、オブジェクトのコンテンツを使用してページにデータを表示する方法を知りたいです。

public string HttpGet(string url)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    try
    {
        using (Stream stream = response.GetResponseStream())
        {
            StreamReader reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }
     }
     finally
     {
         response.Close();
     }
 }      

 protected void submit_Click(object sender, EventArgs e)
 {
    string json = HttpGet("https://www.googleapis.com/shopping/search/v1/public/products?key={KEY}4&country=UK&q=BX80637153570K&rankBy=price:ascending&maxResults=1&alt=json");
     dynamic obj = JsonObject.Parse(json);
 }

応答を見ると、json で返されるデータに C# クラスが必要であるように見えます。json2csharp.com を使用してクラスを作成しました。これは、Json から返してページに表示する必要があるデータです。たぶん、私の問題をよりよく説明するのに役立つでしょう。

https://www.googleapis.com/shopping/search/v1/public/products?key=AIzaSyCC0j59RBeGNtf2W2ft6avhfoTdJ1FQ2c4&country=UK&q=BX80637153570K&rankBy=price:ascending&maxResults=1&alt=json

私のウェブサイトでこの情報をどのように使用できるか、誰でもアドバイスできますか. 私はこれらすべてに不慣れで、いくつかの異なる方法を試したので、今は少し迷っています。違いがある場合、返されたすべてのデータは必要ありませんか? 価格とリンクだけ。

4

2 に答える 2

1

動的 obj が適切に入力されていると仮定すると、そのコンテンツを Web ページで使用できます。たとえば、json が次の場合:

{
  "error" : {
       "code": 400,
       "message": "Bad Request"
  } 
}

次のようなコードでオブジェクト プロパティにアクセスできます。

Response.Write("Error code is" + obj.error.code);

もちろん、Response.Write は、取得したデータをページに送信する方法のサンプルにすぎません。

編集1:

問題で使用されているjsonコンバーターが機能していないか、正しく機能していないようです。多くの場合、特に ExpandoObject を使用できる C# 4 以降では、json を解析するためだけに具象クラスを作成するのはやり過ぎです。

これは、具体的なオブジェクトを作成せずに動的オブジェクトでデシリアライズする方法のサンプルです

    var url = "http://www.google.com/ig/calculator?hl=en&q=100USD=?EUR";
    string json = HttpGet(url);

    //this is json string:
    //{lhs: "100 U.S. dollars",rhs: "78.1799703 Euros",error: "",icc: true}

    //now convert in a dynamic object
    var jss = new DynamicJsonConverter();

    var serializer = new JavaScriptSerializer();
    serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
    dynamic obj = serializer.Deserialize(json, typeof(object));

    //now you have access to json content
    string text1 = obj.lhs;
    string text2 = obj.rhs;

DynamicJsonConverter クラスは、次のコードを使用して作成できます。

JSONをC#動的オブジェクトに逆シリアル化しますか?

于 2013-03-28T11:19:40.833 に答える
0

deserialize対応が必要だと思います

JavaScriptSerializer json_serializer = new JavaScriptSerializer();

レスポンスの結果のプロパティを持つクラスを作成する必要があります。
テストクラスと言う

 class Test 
 {
   //define a similar property here 
   // which you suppose it will be return in the response   

 }

それで

Test routes_list = (Test)json_serializer.DeserializeObject(yourjson);

編集 1

または、このリンクに進むことができ
ます JSON オブジェクトをカスタム C# オブジェクトに変換する方法?

于 2013-03-28T11:16:37.013 に答える