skip to Main Content

I have a json object of objects and I’m trying to map the inner objects to a Java class.

{
"176294012937458694583": {
        "id": "176294012937458694583",
        "description": "Beta",
        "name": "BetaName",
        "account_id": "096382648647"
}
"3428378574582548573293": {
        "id": "3428378574582548573293",
        "description": "Omega",
        "name": "OmegaName",
        "account_id": "32735847382"
}
"4657556334646766874556": {
    "id": "4657556334646766874556",
    "description": "Delta",
    "name": "DeltaName",
    "account_id": "93758598257"
}
}

MyJavaClass 
String id;
String description;
String name;
String accountId;

I was hoping to access the inner objects like this & map to MyJavaClass using Gson:

JsonObject jsonObject = response.body().getAsJsonObject("176294012937458694583");
MyJavaClass myJavaClass = gson.fromJson(response.body().toString(), new TypeToken<MyJavaClass>(){}.getType());

But the inner objects’ memberNames and number of inner objects are unknown until the json data returns. So what would be a better way to access and map these objects to MyJavaClass?

2

Answers


  1. Chosen as BEST ANSWER

    As suggested by OldProgrammer, this answered my question. The custom serializer with jsonObject.entrySet to access my inner objects was what I needed to properly map to MyJavaClass.


  2. you can deserialise your string input as a map of string keys to MyJavaClass values objects using jackson’s ObjectMapper :

    var value = new ObjectMapper().readValue(inputString, new TypeReference<Map<String,MyJavaClass>>(){}););
    

    You can then access your objects as follow :

    value.get("176294012937458694583").getDescription();
    

    rmk : for jackson to work properly you have to have a default constructor and explicit getters in MyJavaClass

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search