是否要用java覆盖json文件的某些部分?

是否要用java覆盖json文件的某些部分?,java,json,Java,Json,我需要能够将数据库中的sql调用解析为json,然后将解析后的json字符串中的关键字段与json文件(从技术上讲是BOD——业务对象文档)进行比较,如果它们匹配,那么我需要用json字符串的匹配值覆盖json文件的匹配值 e、 g.我解析对这个函数的sql调用 { "partyInfo": { "PARTY_NAME": "NORWAY", "STATE": "OSLO", "PARTY_ID": "92706031", "VERTICAL_MARKET_TOP

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

e、 g.我解析对这个函数的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,
}
   {
"partyInfo": {
    "PARTY_NAME": "NORWAY",
    "STATE": "OSLO",
    "PARTY_ID": "92706031",
    "SIC_CODE": null,
}
}

并覆盖匹配键s.t上的值,使结束文件如下所示:

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


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

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

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

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


否则,您将实际使用类似于该工具的工具。

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

下面是一个例子:

我认为您应该将BOD文档解码为一个对象,遍历该对象的属性,将它们与具有相同键的DB结果进行比较,并覆盖BOD中的值,然后将BOD编码回JSON以将其持久化。我不认为有任何理由将DB结果编码为JSON,除非出于某种原因需要将这些数据持久化为JSON。这实际上非常有用