0

我需要能够将 sql 调用从数据库解析为 json,然后将解析的 JSON 字符串中的关键字段与 json 文件(技术上是 BOD --Business Object Document)进行比较,如果它们匹配,那么我需要覆盖json 文件的匹配值与 JSON 字符串的匹配值。

例如,我解析对此的 sql 调用

{
"partyInfo": {
    "PARTY_NAME": "NORWAY",
    "STATE": "OSLO",
    "PARTY_ID": "92706031",
    "VERTICAL_MARKET_TOP_DESC": null,
    "ATTRIBUTE20": null,
    "DUNS_NUMBER": null,
    "SIC_CODE": null,
    "EMPLOYEES_TOTAL": null,
    "ALL_ADDRESS_LINES": "HOMMENKOLLEN 23 TOPPEN 12",
    "CITY": "OSLO",
    "POSTAL_CODE": "1255",
    "COUNTRY_NAME": "NORWAY",
    "KNOWN_AS": null
}

}

然后将其与如下所示的文件进行比较:

{
"partyInfo": {
    "PARTY_NAME": string,
    "STATE": string,
    "PARTY_ID": number,
    "SIC_CODE": string,
}

}

并覆盖匹配键 st 上的值,结束文件如下所示:

   {
"partyInfo": {
    "PARTY_NAME": "NORWAY",
    "STATE": "OSLO",
    "PARTY_ID": "92706031",
    "SIC_CODE": null,
}

}

到目前为止,我已经能够解析对 JSON 的 SQL 调用(现在使用 Jackson,但如果需要我愿意更改),但我不知道如何与文件进行比较并仅覆盖匹配的数据值向上。

4

3 回答 3

0

我可能误解了你想要做什么,但听起来你可以只对文件for中表示 JSON 的键使用循环Map,将值与数据库中的值进行比较,更改任何不匹配的值,然后将文件写回:

for(String key: fileJson.keys())
    if(!fileJson.get(key).equals(sqlJson.get(key)))
        fileJson.put(key, sqlJson.get(key));

// write fileJson back out to the correct file through Jackson
于 2013-07-31T21:26:21.717 回答
0

最简单的解决方案是将这些文件解析为 java 对象(再次使用 Jackson),比较对象,然后保存您需要保存的内容。

否则,您将有效地制作补丁工具之类的东西。

于 2013-07-31T21:26:24.587 回答
0

看起来树模型允许您更新节点。

这是一个示例: http ://wiki.fasterxml.com/JacksonInFiveMinutes#Tree_Model_Example

于 2013-07-31T21:26:56.180 回答