I’m currently working with Apache Camel and Quarkus and consuming a microservice that has the following json as a response:
{
"deviceStatusConnectorResponse": {
"Body": {
"Result": {
"resultCode": 0,
"resultDesc": "SUCCESS0001:Operation is successful",
"resultData": {
"group": [
{
"imsi": "000000000000",
"isdn": "58000000000"
},
{
"group": [
{
"vlrNum": "0000000000",
"mscNum": "0000000000",
"msPurgedForNonGprs": "FALSE",
"vlrInHplmn": "TRUE",
"vlrInHomeCountry": "TRUE",
"vlrInArea": "TRUE",
"requireCheckSS": "FALSE",
"roamingRestrictInMscDueToUnsupportedFeature": "FALSE",
"mscOrVlrAreaRoamingRestrict": "FALSE",
"odBarredForUnsupportedCamel": "FALSE",
"supportedCamelPhase1": "TRUE",
"supportedCamelPhase2": "TRUE",
"supportedCamelPhase3": "FALSE",
"supportedCamelPhase4": "FALSE",
"sriMsrnCfActive": "TRUE",
"zoneCodeStatusAtMsc": "zoneCodesSupported",
"longGroupIDSupported": "FALSE",
"basicISTSupported": "FALSE",
"istCommandSupported": "FALSE",
"superChargerSupportedForGsm": "FALSE",
"ecategoryAtMsc": "FALSE",
"csupltime": "2024-04-30 16:36:39",
"lsflag": "FALSE",
"camelInduceBarringSMS": "FALSE",
"roamBaocTs11": "FALSE",
"mtrfSupported": "FALSE",
"csmsisdnless": "FALSE",
"csUplStatus": "Normal"
},
{
"baocForVlrRestrict": "FALSE"
}
],
"name": ""Dynamic Status Information For GSM""
},
{
"sgsnNum": "584240000204",
"sgsnAddressType": "IPV4",
"sgsnAddress": "186.166.144.3",
"sgsnInHplmn": "TRUE",
"msPurgedForGprs": "FALSE",
"sgsnInHomeCountry": "TRUE",
"sgsnInArea": "TRUE",
"roamingRestrictInSgsnDueToUnsupportedFeature": "FALSE",
"sgsnAreaRoamingRestrict": "FALSE",
"odBarredForUnsupportedCamelForGprs": "FALSE",
"psupltime": "2024-04-22 21:29:20",
"psmsisdnless": "FALSE",
"psUplStatus": "Normal",
"name": ""Dynamic Status Information For GPRS""
},
{
"imei": "861775059548540",
"mmehost": "mmecol03.mmegi65103.mme.epc.mnc004.mcc734.3gppnetwork.org",
"mmerealm": "epc.mnc004.mcc734.3gppnetwork.org",
"rattype": "EUTRAN",
"vplmn": "73404",
"purgedonmme": "FALSE",
"mmeUpdateLocationTime": "2024-04-22 21:29:05",
"mmeFeatureList": "0x0C000600",
"lastIDRorDSRFailed": "FALSE",
"singleRegistrationIndication": "FALSE",
"skipSubscriberDataIndicator": "TRUE",
"gprsSubscriptionDataIndicator": "FALSE",
"nodeTypeIndicator": "Single",
"initialAttachIndicator": "TRUE",
"pslcsNotSupportedByUE": "FALSE",
"imeisv": "76",
"imsvopsSessionsSupported": "UNKNOWN",
"uesrvccCapability": "UE-SRVCC-NOT-SUPPORTED",
"name": ""Dynamic Status Information For MME""
},
{
"imei": "861775059548540",
"lastIDRorDSRFailed": "FALSE",
"skipSubscriberDataIndicator": "FALSE",
"gprsSubscriptionDataIndicator": "FALSE",
"nodeTypeIndicator": "Single",
"initialAttachIndicator": "FALSE",
"pslcsNotSupportedByUE": "FALSE",
"imeisv": "76",
"purgedonsgsn": "FALSE",
"arearestrict": "FALSE",
"s4SGSNFeatureList": "0x00000000",
"imsvopsSessionsSupportedS4SGSN": "UNKNOWN",
"uesrvccCapabilityS4SGSN": "UE-SRVCC-NOT-SUPPORTED",
"name": ""Dynamic Status Information For S4SGSN""
},
{
"ueRegisterAtIMS": "FALSE",
"name": ""Dynamic Status Information For IMS""
},
{
"supportedCamelPhase3SGSN": "FALSE",
"supportedCamelPhase4SGSN": "FALSE",
"zoneCodeStatusAtSgsn": "zoneCodesSupported",
"superChargerSupportedForGprs": "FALSE"
},
{
"mceFforGSM": "FALSE",
"mnrf": "FALSE",
"mnrRforGSM": "No Reason for Non-GPRS",
"name": ""Short Message Dynamic Data for GSM""
},
{
"mceFforGPRS": "FALSE",
"mnrg": "FALSE",
"mnrRforGPRS": "No Reason",
"supportedShortMessageMTPP": "FALSE",
"supportedShortMessageMOPP": "FALSE",
"name": ""Short Message Dynamic Data for GPRS""
},
{
"mceFforIP": "FALSE",
"unri": "FALSE",
"unrr": "No Reason",
"urrpmme": "REACHABLE",
"urrpsgsn": "NOT_REACHABLE ",
"name": ""Short Message Dynamic Data for IP""
},
{
"barredSSAccess": "TRUE",
"barredOutgoingEntertainmentCall": "TRUE",
"barredOutgoingInformationCall": "TRUE",
"supGSMODBBarredOutgoingInternationalCallExHC": "TRUE",
"supGSMODBBarredOutgoingInternationalCall": "TRUE",
"supGSMODBBarredAllOutgoingCall": "TRUE",
"barredAllECT": "TRUE",
"barredChargeableECT": "TRUE",
"barredInternationalECT": "TRUE",
"barredInterzonalECT": "TRUE",
"barredDECT": "TRUE",
"barredMECT": "TRUE",
"name": ""ODB Supported Features For GSM""
},
{
"supGPRSODBBarredAllOutgoingCall": "TRUE",
"supGPRSODBBarredOutgoingInternationalCall": "TRUE",
"supGPRSODBBarredOutgoingInternationalCallExHC": "TRUE",
"barringofPacketOrientedServices": "TRUE",
"name": ""ODB Supported Features For GPRS""
},
{
"mscSupportedLCSCapabilitySet1": "FALSE",
"mscSupportedLCSCapabilitySet2": "FALSE",
"sgsnSupportedLCSCapabilitySet2": "FALSE",
"name": ""Supported LCS""
},
{
"alsdyn": "FALSE",
"vvdndyn": "FALSE",
"name": ""Featured Service Supported Features""
}
]
}
}
}
}
}
However, I can’t get this json into java. I tried using this page:
https://json2csharp.com/code-converters/json-to-pojo
To take it, however at the log level I get something like this when I try to get the response with ObjectMapper:
String bodyResponse=exchange.getIn().getBody(String.class);
DeviceStatusConnectorResponse deviceStatusConnectorResponse =objectMapper.readValue(bodyResponse, DeviceStatusConnectorResponse.class);
String jsonDeviceStatusConnectorResponse=objectMapper.writeValueAsString(deviceStatusConnectorResponse);
log.info("Respuesta Microservicio DeviceStatusConnector "+jsonDeviceStatusConnectorResponse);
What the logs tell me:
{"deviceStatusConnectorResponse":{"Body":{"Result":{"resultCode":0,"resultDesc":"SUCCESS0001:Operation is successful","resultData":{"group":[{"imsi":"734042209390131","isdn":"584242374781","name":null,"sgsnNum":null,"sgsnAddressType":null,"sgsnAddress":null,"sgsnInHplmn":null,"msPurgedForGprs":null,"sgsnInHomeCountry":null,"sgsnInArea":null,"roamingRestrictInSgsnDueToUnsupportedFeature":null,"sgsnAreaRoamingRestrict":null,"odBarredForUnsupportedCamelForGprs":null,"psupltime":null,"psmsisdnless":null,"psUplStatus":null,"imei":null,"mmehost":null,"mmerealm":null,"rattype":null,"vplmn":null,"purgedonmme":null,"mmeUpdateLocationTime":null,"mmeFeatureList":null,"lastIDRorDSRFailed":null,"singleRegistrationIndication":null,"skipSubscriberDataIndicator":null,"gprsSubscriptionDataIndicator":null,"nodeTypeIndicator":null,"initialAttachIndicator":null,"pslcsNotSupportedByUE":null,"imeisv":null,"imsvopsSessionsSupported":null,"uesrvccCapability":null,"purgedonsgsn":null,"arearestrict":null,"s4SGSNFeatureList":null,"imsvopsSessionsSupportedS4SGSN":null,"uesrvccCapabilityS4SGSN":null,"ueRegisterAtIMS":null,"supportedCamelPhase3SGSN":null,"supportedCamelPhase4SGSN":null,"zoneCodeStatusAtSgsn":null,"superChargerSupportedForGprs":null,"mceFforGSM":null,"mnrf":null,"mnrRforGSM":null,"mceFforGPRS":null,"mnrg":null,"mnrRforGPRS":null,"supportedShortMessageMTPP":null,"supportedShortMessageMOPP":null,"mceFforIP":null,"unri":null,"unrr":null,"urrpmme":null,"urrpsgsn":null,"barredSSAccess":null,"barredOutgoingEntertainmentCall":null,"barredOutgoingInformationCall":null,"supGSMODBBarredOutgoingInternationalCallExHC":null,"supGSMODBBarredOutgoingInternationalCall":null,"supGSMODBBarredAllOutgoingCall":null,"barredAllECT":null,"barredChargeableECT":null,"barredInternationalECT":null,"barredInterzonalECT":null,"barredDECT":null,"barredMECT":null,"supGPRSODBBarredAllOutgoingCall":null,"supGPRSODBBarredOutgoingInternationalCall":null,"supGPRSODBBarredOutgoingInternationalCallExHC":null,"barringofPacketOrientedServices":null,"mscSupportedLCSCapabilitySet1":null,"mscSupportedLCSCapabilitySet2":null,"sgsnSupportedLCSCapabilitySet2":null,"alsdyn":null,"vvdndyn":null,"vlrNum":null,"mscNum":null,"msPurgedForNonGprs":null,"vlrInHplmn":null,"vlrInHomeCountry":null,"vlrInArea":null,"requireCheckSS":null,"roamingRestrictInMscDueToUnsupportedFeature":null,"mscOrVlrAreaRoamingRestrict":null,"odBarredForUnsupportedCamel":null,"supportedCamelPhase1":null,"supportedCamelPhase2":null,"supportedCamelPhase3":null,"supportedCamelPhase4":null,"sriMsrnCfActive":null,"zoneCodeStatusAtMsc":null,"longGroupIDSupported":null,"basicISTSupported":null,"istCommandSupported":null,"superChargerSupportedForGsm":null,"ecategoryAtMsc":null,"csupltime":null,"lsflag":null,"camelInduceBarringSMS":null,"roamBaocTs11":null
This is how I am organizing my classes according to what I got from the previous page:
DeviceStatusConnectorResponse
public class DeviceStatusConnectorResponse {
@JsonProperty("deviceStatusConnectorResponse")
private DeviceStatusConnectorResponseBody deviceStatusConnectorResponse;
}
DeviceStatusConnectorResponseBody
public class DeviceStatusConnectorResponseBody {
@JsonProperty("Body")
private BodyResponse bodyResponse;
}
BodyResponse
public class BodyResponse {
@JsonProperty("Result")
private Result result;
}
Result
public class Result {
@JsonProperty("resultCode")
public int resultCode;
@JsonProperty("resultDesc")
public String resultDesc;
@JsonProperty("resultData")
public ResultData resultData;
}
ResultData
public class ResultData {
@JsonProperty("group")
private ArrayList<Group> group;
}
public class Group{
public String imsi;
public String isdn;
public ArrayList<Group> group;
public String name;
public String sgsnNum;
public String sgsnAddressType;
public String sgsnAddress;
public String sgsnInHplmn;
public String msPurgedForGprs;
public String sgsnInHomeCountry;
public String sgsnInArea;
public String roamingRestrictInSgsnDueToUnsupportedFeature;
public String sgsnAreaRoamingRestrict;
public String odBarredForUnsupportedCamelForGprs;
public String psupltime;
public String psmsisdnless;
public String psUplStatus;
public String imei;
public String mmehost;
public String mmerealm;
public String rattype;
public String vplmn;
public String purgedonmme;
public String mmeUpdateLocationTime;
public String mmeFeatureList;
public String lastIDRorDSRFailed;
public String singleRegistrationIndication;
public String skipSubscriberDataIndicator;
public String gprsSubscriptionDataIndicator;
public String nodeTypeIndicator;
public String initialAttachIndicator;
public String pslcsNotSupportedByUE;
public String imeisv;
public String imsvopsSessionsSupported;
public String uesrvccCapability;
public String purgedonsgsn;
public String arearestrict;
public String s4SGSNFeatureList;
public String imsvopsSessionsSupportedS4SGSN;
public String uesrvccCapabilityS4SGSN;
public String ueRegisterAtIMS;
public String supportedCamelPhase3SGSN;
public String supportedCamelPhase4SGSN;
public String zoneCodeStatusAtSgsn;
public String superChargerSupportedForGprs;
public String mceFforGSM;
public String mnrf;
public String mnrRforGSM;
public String mceFforGPRS;
public String mnrg;
public String mnrRforGPRS;
public String supportedShortMessageMTPP;
public String supportedShortMessageMOPP;
public String mceFforIP;
public String unri;
public String unrr;
public String urrpmme;
public String urrpsgsn;
public String barredSSAccess;
public String barredOutgoingEntertainmentCall;
public String barredOutgoingInformationCall;
public String supGSMODBBarredOutgoingInternationalCallExHC;
public String supGSMODBBarredOutgoingInternationalCall;
public String supGSMODBBarredAllOutgoingCall;
public String barredAllECT;
public String barredChargeableECT;
public String barredInternationalECT;
public String barredInterzonalECT;
public String barredDECT;
public String barredMECT;
public String supGPRSODBBarredAllOutgoingCall;
public String supGPRSODBBarredOutgoingInternationalCall;
public String supGPRSODBBarredOutgoingInternationalCallExHC;
public String barringofPacketOrientedServices;
public String mscSupportedLCSCapabilitySet1;
public String mscSupportedLCSCapabilitySet2;
public String sgsnSupportedLCSCapabilitySet2;
public String alsdyn;
public String vvdndyn;
public String vlrNum;
public String mscNum;
public String msPurgedForNonGprs;
public String vlrInHplmn;
public String vlrInHomeCountry;
public String vlrInArea;
public String requireCheckSS;
public String roamingRestrictInMscDueToUnsupportedFeature;
public String mscOrVlrAreaRoamingRestrict;
public String odBarredForUnsupportedCamel;
public String supportedCamelPhase1;
public String supportedCamelPhase2;
public String supportedCamelPhase3;
public String supportedCamelPhase4;
public String sriMsrnCfActive;
public String zoneCodeStatusAtMsc;
public String longGroupIDSupported;
public String basicISTSupported;
public String istCommandSupported;
public String superChargerSupportedForGsm;
public String ecategoryAtMsc;
public String csupltime;
public String lsflag;
public String camelInduceBarringSMS;
public String roamBaocTs11;
public String mtrfSupported;
public String csmsisdnless;
public String csUplStatus;
public String baocForVlrRestrict;
}