使用 Java,接收 Json 消息,找到字段子集,检查所述字段,然后映射到新代码值并导出为 Json

Using Java, take in a Json message, find a subset of fields, check said fields, then map to new Code values and export as Json

好的,我刚开始在 Java 中使用 Json,这就是我想要做的。

使用 Java 我正在接收 Json 消息,例如:

{ 
    "toy": [
        {
             "color":"red",
             "age":"2-4",
             "type": {
                 "format":"electronic",
                 "batteries":"Y"
             },
             "price":""
        }
     ]
}

现在,假设我有几个通过上面的字段使用不同的值。我想根据一些要求获取消息并提取字段,这将需要某些字段映射到新字段。例如:

要求 1

字段:颜色

映射到:颜色

领域:电池

映射到:需要电池吗?

所以输出将是:

{ 
    "Toy": [
        {
            "Colour":"red",
            "Batteries Required?":"Y"
        }
    ]
}

然后假设可能有其他要求需要不同的字段或字段组合,或字段转换(如货币转换)。

我想知道最干净、最有效的方法是什么。 Java之内的Json是否已经存在这种东西?

您可以使用 Jolt 来转换 Json 对象,就像 XSLT 对 XML 所做的那样:https://github.com/bazaarvoice/jolt。使用此库,您可以定义一个 "transformation rule" 来读取您的输入并根据规则生成一个 json。

另一种方法是 Json 路径,它允许您在 json 对象中查找元素,就像在 xpath 中一样:https://github.com/json-path/JsonPath

你可以试试小jmomjava库

JsonValue json = JsonParser.parse(stringvariablewithjsoninside);
Jmom littlemom = Jmom.instance()
    .copy("/color", "/Colour", true)
    .copy("/type/batteries", "/Batteries Required?", true)
    .remove("/type", "/age", "/price")
    ;
Jmom mom = Jmom.instance()
    .copy("/toy", "/Toy", true)
    .apply(littlemom, "/Toy/*")
    ;
mom.apply(json);
String str = json.toPrettyString("  ");