是否要用java覆盖json文件的某些部分?
我需要能够将数据库中的sql调用解析为json,然后将解析后的json字符串中的关键字段与json文件(从技术上讲是BOD——业务对象文档)进行比较,如果它们匹配,那么我需要用json字符串的匹配值覆盖json文件的匹配值 e、 g.我解析对这个函数的sql调用是否要用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
{
"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。这实际上非常有用