繁体   English   中英

将一个 JSON object 映射到另一个

[英]Mapping one JSON object to another

我有一个 REST API 接收一些 JSON 数据。 此数据中的字段来自另一个使用不同名称来指代相同事物的记录系统。

出于这个原因,我需要将传入的 object 中的字段 map 到我将存储在我们的数据库中的 object 中的字段。 例如,传入的 object 可能如下所示:

{
    "caseId": 9876    
    "userId": 123456,
}

和传出 object 将需要

{
    "case_id": 9876
    "user": {
        "id": 123456
    }
}

映射 caseId 之类的字段非常简单。 但是对于像 userId 这样的字段,我可能需要 map 他们深入嵌套对象的几个层次,是否有任何库或简单的技术来进行这样的映射? 理想的解决方案将允许我像这样指定映射:

{
    "caseId": "case_id",
    "userId": "user.id"
{

我们可以按点split ,然后分配给适当的 object 名称。

 var original = { "caseId": 9876, "userId": 123456, } var mapping = { "caseId": "case_id", "userId": "user.id" } var result = {}; Object.entries(original).forEach(function([key, value]) { var new_name = mapping[key] if (new_name) { var arr = new_name.split("."); var pointer = result; for (var i = 0; i < arr.length - 1; i++) { pointer[arr[i]] = {} pointer = pointer[arr[i]]; } pointer[arr[arr.length - 1]] = value; } else { // default copy? result[key] = value; } }) console.log(result)

说到映射——我已经不再依赖库了。 通常需要进行大量设置,并且永远没有完整的解决方案。 编写一个方法更容易,它需要一个 model 并返回一个映射的 model

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM