У меня есть простой сервер, который читает все журналы с mongodb, но некоторые данные в БД имеют другой формат для своего свойства результата.
один из которых имеет свойство результата, имеющее значение, подобное хэш-карте:
{
"event_name" : "Transfer",
"result" : { "_from" : "0x928c9af0651632157ef27a2cf17ca72c575a4d21",
"_value" : "1111",
"_to" :"0x143449e55cdd2a5bae081f041650ba9089812a95" },
"transaction_id":"c2c986a96a0cfa7fc96619733449fd88c9d685bf704a50d07baef74f6
}
, тогда для свойства результата он возвращает пустой результат для меня,но если свойство результата выглядит так, как массив:
"result" : ["0x928c9af0651632157ef27a2cf17ca72c575a4d21", "1111", "0x143449e55cdd2a5bae081f041650ba9089812a95"],
, то оно выведет значение результата. Дело в том, что оно имеетоба формата в mongodb, есть ли способ обработать оба из 2 различных форматов свойства результата?
import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
@Document(collection = "eventLog")
public class EventLogEntity implements Serializable {
private static final long serialVersionUID = -70777625567836430L;
@Id
private String id;
@Field(value = "block_number")
@JsonProperty(value = "block_number")
private long blockNumber;
@Field(value = "block_timestamp")
@JsonProperty(value = "block_timestamp")
private long blockTimestamp;
@Field(value = "contract_address")
@JsonProperty(value = "contract_address")
private String contractAddress;
@Field(value = "event_name")
@JsonProperty(value = "event_name")
private String entryName;
@Field(value = "result")
@JsonProperty(value = "result")
private JSONArray resultJsonArray;
@Field(value = "transaction_id")
@JsonProperty(value = "transaction_id")
private String transactionId;
public EventLogEntity(long blockNumber, long blockTimestamp, String contractAddress,
String entryName, JSONArray resultJsonArray, String transactionId) {
this.blockNumber = blockNumber;
this.blockTimestamp = blockTimestamp;
this.contractAddress = contractAddress;
this.entryName = entryName;
this.resultJsonArray = resultJsonArray;
this.transactionId = transactionId;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public long getBlockNumber() {
return blockNumber;
}
public void setBlockNumber(long blockNumber) {
this.blockNumber = blockNumber;
}
public long getBlockTimestamp() {
return blockTimestamp;
}
public void setBlockTimestamp(long blockTimestamp) {
this.blockTimestamp = blockTimestamp;
}
public String getContractAddress() {
return contractAddress;
}
public void setContractAddress(String contractAddress) {
this.contractAddress = contractAddress;
}
public String getEntryName() {
return entryName;
}
public void setEntryName(String entryName) {
this.entryName = entryName;
}
public JSONArray getResultJsonArray() {
System.out.println(resultJsonArray.toString());
return resultJsonArray;
}
public void setResultJsonArray(JSONArray resultJsonArray) {
this.resultJsonArray = resultJsonArray;
}
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
}