我的代碼中有一個 mongo 數據庫調用。來自數據庫的響應使用 codehaus jackson 進行映射。杰森:[ { "_id": "555", "rates": 1, "reviews": [ { "author_name": "Instructor 9999", "_authKey": "demo\\556", "text": "asdfa", "date": 551, "_id": "5454-4920", "title": "asdf", "comments": [] } ], "votedUsers": [ { "mng\\39999": 4 } ], "rating": 4 }, { "_id": "45589", "rates": 1, "reviews": [ { "author_name": "feef", "_authKey": "ad\\ads", "text": "Working perfect", "date": 1498659163, "_id": "asdas-319", "title": "test", "comments": [] } ], "votedUsers": [ { "abc\\[email protected]": 4 } ], "rating": 4 }]我創建了以下 DTO 結構:@JsonIgnoreProperties(ignoreUnknown = true)public class MaterialReviewsDTO implements Serializable { private static final long serialVersionUID = 1L; private String _id; private int rates; private List<ReviewsDTO> reviews; private List<VotedUsersDTO> votedUsers; //List<TypeReference<HashMap<String, String>>> votedUsers; private int rating;. //Getter Setter}@JsonIgnoreProperties(ignoreUnknown = true)public class VotedUsersDTO implements Serializable { private static final long serialVersionUID = 1L; private Map<String, String> votedUser; //Getter Setter}下面是我觸發查詢的代碼:List<MaterialReviewsDTO> materialReviewsDTOs = DBConnectionRealmByDBName .find(query, MaterialReviewsDTO.class, CollectionNameConstant.REVIEWS_COLLECTION);問題是除了以下部分之外,所有 JSON 都在 DTO 中映射:"votedUsers" : [ { "abc\\[email protected]" : 4 } ]VotedUserDTO 響應為空。VotedUsers 是包含鍵值對中數據的對象列表。我沒有提到ReviewsDTO,因為它被完美地映射了。我怎樣才能映射votedUsers部分? 注意:我正在使用 Spring 進行開發。
3 回答
HUX布斯
TA貢獻1876條經驗 獲得超6個贊
JSON 中的一些觀察結果
1. Json 在設計時應牢記固定鍵和變量值。
2. 由于在上述情況下 Key 和 values 都是可變的,我們可以使用 Map
所以最終的解決方案是
從更改private List<VotedUsersDTO> votedUsers;為private List<Map<String, Integer>> votedUsers
回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
votedUsers 應該是 VotedUsersDTO 列表。
如果您查看 JSON 中的 VotedUsersDTO:
{
"abc\\[email protected]" : 4
}
這意味著有一個字段abc\\[email protected]您希望值為 4。這不符合DTO 定義中的idorvotedUser映射。
添加回答
舉報
0/150
提交
取消
