从嵌套的Json中提取参数

时间:2019-08-26 17:09:26

标签: json objectmapper

我有一个json字符串,看起来像这样:

{
    \"request\": {
        \"requestId\": \"dd92f43ec593d2d8db94193b7509f5cd\",
        \"notificationType\": \"EntityAttribute\",
        \"notificationSource\": \"ODS\"
    },
    \"entityattribute\": {
        \"entityId\": \"123\",
        \"attributeType\": \"DATE_OF_BIRTH\"
    }
}

我想反序列化实体的属性:

public class EntityAttributeNotification {
    private String attributeType;
    private String entityId;
}

一种方法是首先使用json路径(例如,entityattribute / entityId)提取EntityId和attributeType,然后创建一个对象EntityAttributeNotification。

我想知道是否有一种方法可以直接反序列化实体属性给EntityAttributeNotification。 我也尝试过使用JsonMixin注释,但这不适用于此处。

1 个答案:

答案 0 :(得分:0)

通过以下方法,您可以提取嵌套的JSON的ParametersValues

const object1 ={
    "request": {
        "requestId": "dd92f43ec593d2d8db94193b7509f5cd",
        "notificationType": "EntityAttribute",
        "notificationSource": "ODS"
    },
   "entityattribute": {
        "entityId": "123",
        "attributeType": "DATE_OF_BIRTH"
    }
};
var keys = [];
for (let [key, value] of Object.entries(object1)) {
    if(typeof value == 'object'){
        keys.push(key);
        for (let [key1, value1] of Object.entries(value)) {
            keys.push(key1);
        }
    }
    else{
        keys.push(key);
    }

}
console.log(keys);