JSON到JSON变压器(JSON to JSON transformer)

2019-06-18 16:00发布

我有一个场景。

所需的输入和输出是JSON。

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


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

我需要一些变换代码或优选XSLT类型的语言从一种格式变换JSON到另一个。 该变压器也需要快,转型将在飞行中完成。

编辑
我没有收到输入对象的定义,它可能会在运行时更改。 但如果需要,我可以使用类的输出对象。 我试图这样做,因为JSON - > XML - > XSLT - > XML - > JSON,但大约1000个对象在为此每秒接收的,这个过程可能会招致的开销。
我也无法使用JavaScript作为对myApp是简单的基于Windows的Java应用程序和使用JavaScript可能会导致开销。

Answer 1:

您可以使用左巴和JsonIQ http://www.jsoniq.org/然而,这是一个机库,它带有一个包装,所以你可以在Java中使用它。



Answer 2:

尝试JOLT 。 这是一个JSON以JSON转换库用Java编写的。 它是在一个从一个ElasticSearch“后端”的前端API转化不少JSON的项目创建。

对于JSON变换你已经在你的问题中列出,颠簸“转移”规范是:

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


Answer 3:

为此,您可以用转换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);

我没有测试这一点,但应该像这样工作。



Answer 4:

JavaScript的JSON变压器: https://raw.githubusercontent.com/udhayasoftware/codebase/master/standalone/javascript/TransformJSON.js



Answer 5:

另一种选择是使用Logz.io 锯木厂库。 你定义一个管道,并执行它。 对于您例如:

{
  steps: [
    {
      rename {
         config {
            from: "OldObject"
            to: "NewObject"
         }
      }
    }

    {
      removeField {
        config {
          path: "NewObject.price"
        }
      }
    }

    {
      rename {
        config {
          from: "NewObject.Name"
          to: "NewObject.Title"
        }
      }
    }
  ]
}


Answer 6:

您可以尝试Java库锡伦西奥 ,让您的JSON文件的每个节点转换成新的值。 你可以决定如何节点应该转变。



文章来源: JSON to JSON transformer