JSON到JSON转换器

我有一个场景。

所需的输入和输出是JSON。

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

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

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

试试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" } } 

您可以使用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); 

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

Javascript JSON Transformer: https : //raw.githubusercontent.com/udhayasoftware/codebase/master/standalone/javascript/TransformJSON.js

您可以尝试Java库Silencio ,它允许您将JSON文件的每个节点转换为新值。 您可以决定应该转换哪些节点以及如何转换节点。

另一种选择是使用Logz.io Sawmill库。 您定义管道并执行它。 对于你的例子:

 { steps: [ { rename { config { from: "OldObject" to: "NewObject" } } } { removeField { config { path: "NewObject.price" } } } { rename { config { from: "NewObject.Name" to: "NewObject.Title" } } } ] }