我们正在java服务器中调用一个API,该API返回json。 现在我们要将此json转换为另一个json。但是我们希望将转换映射放在一个单独的文件中。 例如,
Json A:
{
"json_id":"3",
"json_another_id":"43",
"code":34,
"json_name":"Yey"
}
To convert into Json B:
{
"id":"3",
"another_id":"43",
"code":34,
"name":"Yeyproto"
}
下面是我希望它出现在单独文件中的映射:
"json_id" -> "id"
"json_another_id" -> "another_id"
"json_name" -> "name"
请让我知道一个好的解决方案。我已经检查过杰克逊mixin,但是它可以从json转换为pojo
答案 0 :(得分:0)
尝试JOLT。它是用Java编写的JSON到JSON转换库,其中转换的“规范”本身就是JSON文档。它是在一个项目中创建的,该项目将许多JSON从ElasticSearch“后端”转换为前端api。
答案 1 :(得分:0)
Jolt是Java中从JSON到JSON转换的一种流行工具。您可以使用给定的 Jolt Spec 如下实现该目标:
震动规格
[
{
"operation": "shift",
"spec": {
"@json_id": "id",
"@json_another_id": "another_id",
"@code": "code",
"@json_name": "name"
}
}
]
您可以通过Jolt Transform Demo进行验证,以放入原始JSON字符串和 Jolt Spec ,然后按 Transform 按钮查看结果。以下代码段显示了如何在Java中实现这一目标。
Maven依赖
<dependency>
<groupId>com.bazaarvoice.jolt</groupId>
<artifactId>jolt-core</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>com.bazaarvoice.jolt</groupId>
<artifactId>json-utils</artifactId>
<version>0.1.0</version>
</dependency>
代码段
String spec = "[\r\n" +
" {\r\n" +
" \"operation\": \"shift\",\r\n" +
" \"spec\": {\r\n" +
" \"@json_id\": \"id\",\r\n" +
" \"@json_another_id\": \"another_id\",\r\n" +
" \"@code\": \"code\",\r\n" +
" \"@json_name\": \"name\"\r\n" +
" }\r\n" +
" }\r\n" +
"]";
Chainr chainr = Chainr.fromSpec(JsonUtils.jsonToList(spec));
Object transformedOutput = chainr.transform(JsonUtils.jsonToObject(jsonStr));
System.out.println(transformedOutput.toString());
控制台输出
{id = 3,another_id = 43,code = 34,name = Yey}