JSON 到 JSON 转换器

2022-09-01 07:30:45

我有一个场景。

所需的输入和输出为 JSON。

// Input
{
  "OldObject": {
    "Time": 1351160457922,
    "Name": "OName",
    "quantity": 100,
    "price": 10
  }
}


// Output
{
  "NewObject": {
    "Time": 1351160457922,
    "Title": "OName",
    "quantity": 100
  }
}

我需要一些转换代码或最好是xslt类型语言来将json从一种格式转换为另一种格式。该变压器还需要快速,因为转换将在运行中完成。

编辑
我没有收到的 INPUT 对象的定义,它可能会在运行时更改。但是如果需要,我可以对输出对象使用类。我尝试以json -> xml -> xslt -> xml -> json的形式执行此操作,但是此时每秒大约接收1000个对象,此过程可能会产生开销。
我也不能使用JavaScript,因为myApp是基于Windows的简单Java应用程序,使用JavaScript可能会导致开销。


答案 1

试试 JOLT。它是用Java编写的JSON到JSON转换库。它是在一个项目中创建的,该项目正在将许多JSON从ElasticSearch“后端”转换为前端API。

对于您在问题中列出的 JSON 转换,Jolt “shift” 规范为:

// Jolt "shift" spec
{
    "OldObject": {
        "Time": "NewObject.Time",   
        "Name": "NewObject.Title", // if the input has "OldObject.Name", copy it's value
                                   // to "NewObject.Title
        "quantity": "NewObject.quantity"
    }
}

答案 2

您可以使用 JSON 修补程序执行此转换。

jsonpatch-js 的示例

var transformations = [
  { move: '/OldObject', to: '/NewObject' },
  { remove: '/NewObject/price' },
  { move: '/NewObject/Name', to: '/NewObject/Title' }
];

var oldObject = { "OldObject": { "Time": 1351160457922, "Name": "OName", "quantity": 100, "price": 10 } };

jsonpatch.apply(oldObject, transformations);

我没有测试所提供的,但应该像那样工作。

有用于 JSON 补丁的 Java 实现