カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

JSONデータをCodableを使って構造化する

JSONデータを解析するためにJSONSerializerを使っていましたが、Swift4からもっと簡単にできるようになったのでやってみました。

CodableというプロトコルがSwift4から新たに追加されました。
これを利用すれば簡単に構造体に落とし込むことができます。

まずはデータを扱う構造体を宣言します。
Codableと付け加えましょう。

struct myData: Codable {
    
    let ID_C: Int
    let NAME_C: String
    let COMMENT_C: String? //nullを許容
    let DATE_C: String

}

次にWEB上からデータを取得するため、URLSessionを使用します。

let session = URLSession(configuration: URLSessionConfiguration.default)
let url = "http://www.example.jp/json.php" //JSONデータを取得するURL

単純に文字列で出力してみましょう。 続きを読む…»

2,221 views

PHPでJSON形式のデータを簡単に扱う

PHPにはJSON形式のデータを簡単に扱える関数が用意されています。
PHP5.2.0以降であればコアに含まれるので追加インストールの必要はありません。

例として会員システムで登録ユーザーの最終ログイン日とログイン回数を記録するというプログラムとします。

まずは以下のようなサンプル配列を作成します。

$VALUE["suzuki"]    = array("last_login_date" => "13-10-26", "count" => 1);
$VALUE["hashimoto"] = array("last_login_date" => "13-10-28", "count" => 5);

確認のため、出力してみます。

Array
(
    [suzuki] => Array
        (
            [last_login_date] => 13-10-26
            [count] => 1
        )

    [hashimoto] => Array
        (
            [last_login_date] => 13-10-28
            [count] => 5
        )

)

作成した配列を引数として渡し、JSONデータを作成します。

$json = json_encode($VALUE);

出力してみましょう。

{"suzuki":{"last_login_date":"13-10-26","count":1},"hashimoto":{"last_login_date":"13-10-28","count":5}}

たったこれだけでJSONデータが作成できます。

次はデータに変更を加えてみます。 続きを読む…»

9,148 views

JSONデータを扱う [Android]

以下のようなJSONデータがあったとします。

{"json":[{"id": "00001","category": "カテゴリー1","title": "テスト1"},{"id": "00002","category": "カテゴリー2","title": "テスト2"}]}
String json_data = "{\"json\":[{\"id\": \"00001\",\"category\": \"カテゴリー1\",\"title\": \"テスト1\"},{\"id\": \"00002\",\"category\": \"カテゴリー2\",\"title\": \"テスト2\"}]}";

JSONArray jArray;
StringBuilder sb = new StringBuilder();

try {
    jArray = new JSONObject( json_data ).getJSONArray( "json" );

    for (int i = 0; i < jArray.length(); i++) {
        JSONObject jsonObj = jArray.getJSONObject(i);
        sb.append(jsonObj.getString("title"));
    }

    Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();

} catch (JSONException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

コード上でデータを追加する場合(例外処理は上記と同様にしてださい)

JSONObject nJArray = new JSONObject();
nJArray.put("id", "00003");
nJArray.put("category", "カテゴリ3");
nJArray.put("title", "テスト3");
jArray.put(nJArray);
10,396 views

Webサービスとの連携

org.apache.httpクラスを使ってHTTP通信をおこないます。

AndroidManifest.xmlにインターネット接続許可の記述を追加します。

<uses-permission android:name="android.permission.INTERNET" />

Getメソッド

public String doGet( String url )
{
    try
    {
        HttpGet method = new HttpGet( url );

        DefaultHttpClient client = new DefaultHttpClient();

        // ヘッダを設定する
        method.setHeader( "Connection", "Keep-Alive" );

        HttpResponse response = client.execute( method );
        int status = response.getStatusLine().getStatusCode();
        if ( status != HttpStatus.SC_OK )
            throw new Exception( "" );

        return EntityUtils.toString( response.getEntity(), "UTF-8" );
    }
    catch ( Exception e )
    {
        return null;
    }
}

続きを読む…»

6,902 views