JSON到JSON转换器

Cha*_*ish 23 java xslt json jackson

我有一个场景.

所需的输入和输出是JSON.

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


// Output
{
  "NewObject": {
    "Time": 1351160457922,
    "Title": "OName",
    "quantity": 100
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mil*_*o S 20

试试JOLT.它是用Java编写的JSON to 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"
    }
}
Run Code Online (Sandbox Code Playgroud)


KAR*_*ván 12

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

我没有测试这个,但应该这样工作.


mva*_*ebr 5

您可以使用ZORBA和JsonIQ http://www.jsoniq.org/。 但是,这是一个本机库,它带有包装器,因此可以在Java中使用它。