1. ホーム
  2. java

[解決済み] 複雑なキーを持つマップのJSON表現

2022-03-03 17:03:57

質問

以下のような(Javaの)データ構造をJSONにシリアライズしたいのですが、どうすればいいですか?

class Machine {
  String name;
  Map<PartDescriptor, Part> parts;
}

class PartDescriptor {
  String group;
  String id;

  hashCode()
  equals()
}

class Part {
  String group;
  String id;
  String description;
  String compat;
  ...
  ...
}

のJSON表現はどのようになりますか? Machine ?

また、( 任意 ) あなたの表現をサポートする JSON to Java シリアライザー/デシリアライザーを教えてください。

どのように解決するのですか?

私ならこんな風にします。

{
  "name": "machine name",
  "parts": [
     { "group": "part group", "id": "part id", "description": "...", ... },
     { "group": "part group", "id": "part id", "description": "...", ... },
     // ...
  ]
}

各パーツのquot;id"が一意であれば、quot;parts"プロパティは配列ではなく、各パーツのquot;id"をキーとするオブジェクトとすることができる。

{
  "name": "machine name",
  "parts": {
     "1st part id": { "group": "part group", "description": "...", ... },
     "2nd part id": { "group": "part group", "description": "...", ... },
     // ...
  }
}