比较两个 JSON 并显示我们更改了哪一列的活动?
Posted
技术标签:
【中文标题】比较两个 JSON 并显示我们更改了哪一列的活动?【英文标题】:Compare two JSON and also show activity which column we changed? 【发布时间】:2021-09-14 13:39:09 【问题描述】:如何比较两个 JSON,一个来自数据库,另一个来自 UI(意味着当我单击编辑按钮时)?如何比较这两个 JSON?
第一个 Json
"id": 2,
"createdAt": "07-01-2021 15:26:16",
"updatedAt": "07-01-2021 15:26:16",
"offerAcceptedDate": "06-30-2021 07:14:00",
"offerAmount": 100000,
"offerDate": "06-30-2021 07:14:00",
"offerFile": "string",
"possibleCloseDate": "06-30-2021 07:14:00",
"remarks": "string",
"salesId": 8,
"status": "Active",
"contactId": 32,
"createdById": 1,
"offerAcceptedById": 1
第二个 JSON
"createdAt": "09-01-2021 15:26:16",
"updatedAt": "10-01-2021 15:26:16",
"offerAcceptedDate": "06-30-2021 07:14:00",
"offerAmount": 500000,
"offerDate": "06-30-2021 07:14:00",
"offerFile": "string",
"possibleCloseDate": "06-30-2021 07:14:00",
"remarks": "string",
"salesId": 8,
"status": "Active",
"contactId": 32,
"createdById": 1,
"offerAcceptedById": 1
此外,比较这两个 JSON 并显示活动“哪一列”发生了变化。 像这样:
createdAt: Changed
updatedAt: Changed
offeramount: Changed
【问题讨论】:
【参考方案1】:1)首先我使用 findById(JPA Repository) 从数据库获取数据
2)比较Db字段和请求正文字段
像这样:
LeadOffer leadOffer = leadOfferRepository.findById(offerId).orElse(null);
JsonObject jsonObject = new JsonObject();
JsonArray jsonArray= new JsonArray();
if (leadOffer.getAmount() != leadOfferRequest.getAmount())
offer.setAmount(leadOfferRequest.getAmount());
jsonObject.addProperty("amount",leadOfferRequest.getAmount() );
jsonObject1.addProperty("amount",leadOffer.getAmount() );
jsonArray.add(jsonObject);
【讨论】:
【参考方案2】:您可以为此目的使用guava 库。例如:
String json1 = "\"name\":\"ABC\", \"city\":\"XYZ\", \"state\":\"CA\"";
String json2 = "\"city\":\"XYZ\", \"street\":\"123 anyplace\", \"name\":\"ABC\"";
Gson g = new Gson();
Type mapType = new TypeToken<Map<String, Object>>().getType();
Map<String, Object> firstMap = g.fromJson(json1, mapType);
Map<String, Object> secondMap = g.fromJson(json2, mapType);
System.out.println(Maps.difference(firstMap, secondMap).entriesDiffering());
这显示了两个映射中都存在但具有不同值的键
【讨论】:
以上是关于比较两个 JSON 并显示我们更改了哪一列的活动?的主要内容,如果未能解决你的问题,请参考以下文章
Scala Spark,比较两个 DataFrame 并选择另一列的值