JavaでJSONObjectのプロパティを自動インクリメントする方法
JSONObjectとは
JSONObjectは、名前と値(name/value)のペアからなる順序を持たないコレクションであり、文字列からテキストを解析してMapのようなオブジェクトを生成します。Javaでは、JSONObjectクラスが提供するincrement()メソッドを使用することで、プロパティの値を簡単に自動インクリメントできます。
指定したキーに対応するプロパティが存在しない場合は、値1で新しいプロパティが作成されます。一方、プロパティが既に存在し、その値がInteger、Long、Double、Floatのいずれかの数値型であれば、現在の値に1が加算されます。
increment()メソッドの構文
public JSONObject increment(java.lang.String key) throws JSONException
このメソッドはJSONObject自身を返すため、戻り値を利用してメソッドチェーンをつなげば、複数のプロパティを1行で連続的にインクリメントすることも可能です。なお、処理中に問題が発生した場合はJSONExceptionがスローされるため、呼び出し側で適切な例外処理を行う必要があります。
実装例
以下のコードでは、「year」と「age」という2つのプロパティを持つJSONObjectを作成し、increment()メソッドを繰り返し呼び出して値を更新しています。
import org.json.JSONException;
import org.json.JSONObject;
public class IncrementJSONObjectTest {
public static void main(String[] args) throws JSONException {
JSONObject jsonObj = new JSONObject();
jsonObj.put("year", 2019);
jsonObj.put("age", 25);
System.out.println(jsonObj.toString(3));
jsonObj.increment("year").increment("age");
System.out.println(jsonObj.toString(3));
jsonObj.increment("year").increment("age");
System.out.println(jsonObj.toString(3));
jsonObj.increment("year").increment("age");
System.out.println(jsonObj.toString(3));
}
}実行結果
{
"year": 2019,
"age": 25
}
{
"year": 2020,
"age": 26
}
{
"year": 2021,
"age": 27
}
{
"year": 2022,
"age": 28
}ポイントまとめ
- increment()メソッドは、対象のキーが存在しなければ値「1」で新規作成する。
- 既存の値がInteger、Long、Double、Floatの場合のみ1を加算する。
- 戻り値がJSONObjectなので、チェーン形式で複数プロパティを一括更新できる。
- 文字列型など数値以外のプロパティに対しては使用できない点に注意が必要。
カウンター管理やアクセス回数の集計など、JSONデータ内の数値を動的に増やしたいシーンで、increment()メソッドは非常に便利です。ぜひ活用してみてください。
-
JavaでJTableに検索機能を実装する方法をわかりやすく解説
JTableは、複雑なデータ構造を表形式で表示するためのSwingコンポーネントで、JComponentのサブクラスです。JTableはMVC(Model View Controller)デザインパターンに従って設計されており、データを行と列の形式で画面に表示できます。また、TableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListenerといった各種リスナーインターフェースを利用することで、柔軟なイベント処理が可能です。JTableに検索機能を実装するには
-
JavaでJComboBoxの項目をソートする方法!DefaultComboBoxModelのカスタマイズ例
JComboBoxはJComponentクラスのサブクラスであり、テキストフィールドと、ユーザーが値を選択できるドロップダウンリストを組み合わせたSwingコンポーネントです。ユーザーがコンボボックスを操作すると、ActionListener、ChangeListener、ItemListenerといったインターフェースを通じてイベントを受け取ることができます。 ただし、標準のJComboBoxにはアイテムを並べ替える(ソートする)機能は用意されていません。そこで本記事では、DefaultComboBoxModelクラスを継承した独自のモデルクラスを作成し、コンボボックスの項目を常に整序された