JSON Representation of Map with Complex Key

java, javascript, json, serialization

Solution

I'd do something like:

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

If the "id" for each Part is unique, then the "parts" property can be an object instead of an array, with the "id" of each part serving as the key.

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

Problem

I want to serialize to JSON the following (java) data structure: ``` 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; ... ... } ``` What would be JSON representation of one `Machine`? Also (optional), point me to a JSON to Java serializer/deserializer that will support your representation

Original source