この回答では、Justin Grammensが投稿した例を使用しています。
JSONについて
JSONはJavaScript Object Notationの略です。JavaScriptでは、このように、object1.name
またこの ようにプロパティを参照できますobject['name'];
。記事の例では、このJSONを使用しています。
メールをキー、foo @ bar.comを値とするパーツ Aのファンオブジェクト
{
fan:
{
email : 'foo@bar.com'
}
}
したがって、同等のオブジェクトはfan.email;
またはになりfan['email'];
ます。どちらも同じ値になり'foo@bar.com'
ます。
HttpClientリクエストについて
以下は、作成者がHttpClientリクエストを作成するために使用したものです。私はこれで専門家であると主張していませんので、誰かがいくつかの用語をより良い言葉で言うことができれば自由に感じてください。
public static HttpResponse makeRequest(String path, Map params) throws Exception
{
//instantiates httpclient to make request
DefaultHttpClient httpclient = new DefaultHttpClient();
//url with the post data
HttpPost httpost = new HttpPost(path);
//convert parameters into JSON object
JSONObject holder = getJsonObjectFromMap(params);
//passes the results to a string builder/entity
StringEntity se = new StringEntity(holder.toString());
//sets the post request as the resulting string
httpost.setEntity(se);
//sets a request header so the page receving the request
//will know what to do with it
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
//Handles what is returned from the page
ResponseHandler responseHandler = new BasicResponseHandler();
return httpclient.execute(httpost, responseHandler);
}
地図
Map
データ構造に慣れていない場合は、Java Mapのリファレンスをご覧ください。つまり、マップは辞書やハッシュに似ています。
private static JSONObject getJsonObjectFromMap(Map params) throws JSONException {
//all the passed parameters from the post request
//iterator used to loop through all the parameters
//passed in the post request
Iterator iter = params.entrySet().iterator();
//Stores JSON
JSONObject holder = new JSONObject();
//using the earlier example your first entry would get email
//and the inner while would get the value which would be 'foo@bar.com'
//{ fan: { email : 'foo@bar.com' } }
//While there is another entry
while (iter.hasNext())
{
//gets an entry in the params
Map.Entry pairs = (Map.Entry)iter.next();
//creates a key for Map
String key = (String)pairs.getKey();
//Create a new map
Map m = (Map)pairs.getValue();
//object for storing Json
JSONObject data = new JSONObject();
//gets the value
Iterator iter2 = m.entrySet().iterator();
while (iter2.hasNext())
{
Map.Entry pairs2 = (Map.Entry)iter2.next();
data.put((String)pairs2.getKey(), (String)pairs2.getValue());
}
//puts email and 'foo@bar.com' together in map
holder.put(key, data);
}
return holder;
}
この投稿に関して発生した質問や、私が明確にしていないこと、またはまだ混乱していることに触れたことがない場合は、遠慮なくコメントしてください。
(Justin Grammensが承認しない場合は削除します。承認しない場合は、Justinがクールであることに感謝します。)
更新
私はたまたまコードの使い方についてコメントをもらい、戻り値の型に誤りがあることに気づきました。メソッドシグネチャは文字列を返すように設定されていましたが、この場合は何も返しませんでした。署名をHttpResponseに変更しました。HttpResponseのレスポンスボディの取得に関するこのリンクを参照します。
パス変数はURLであり、コードの誤りを修正するために更新しました。