所以我有一個elasticsearch數據庫,我用它來存儲聯繫人。我做下面的查詢。Elasticsearch Java API查詢JSON解析器
public String getAllContacts() throws IOException {
SearchResponse response = client.prepareSearch("contact").get();
return response.toString();
}
於是我得到這樣 Json result from query
一個結果,那麼我想提出的JSON數據到我的聯繫對象類
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;
@JsonIgnoreProperties(ignoreUnknown = true)
@XmlRootElement
public class Contact {
private long id;
private String name;
private Date date;
public Contact() {}
public Contact(long id, String name, Date date) {
this.id = id;
this.name = name;
this.date = date;
}
public long getId() {return id;}
public void setId(long id) {this.id = id;}
public String getName() { return name;}
public void setName(String name) {this.name = name;}
public Date getDate() { return date; }
public void setDate(Date date) { this.date = date; }
}
後來我但是,當我嘗試映射JSON反對使用下面的代碼我得到的錯誤
ObjectMapper mapper = new ObjectMapper();
List<Contact> myObjects = mapper
.readValue(response.toString(), mapper
.getTypeFactory()
.constructCollectionType(List.class, Contact.class));
其中之一許多錯誤
Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
,所以我認爲這個問題是所有這些來自查詢,如果我得到一個乾淨的JSON這樣{"id":"2","name";"dinu"}
它的工作原理其他的東西(我沒有手動測試),但它與許多其他的東西,例如作爲JSON文件(標題元數據)的頂部(檢查上面的JSON結果圖像)。
所以我覺得我有2個選擇: -
選項1: - 得到elasticsearch DB乾淨的結果,所以我需要修改的搜索查詢。我不知道彈性搜索是否可以實現。如果是的話,有人可以提出如何修改查詢的建議(在Java API中)。
選項2: - 篩選出JSON文件並刪除所有不需要的東西,然後將其變爲Contact對象。我試圖GSON和傑克遜都與未經過濾的文件失敗。如果有任何先進或自定義的方式來過濾讓我知道。
選項3: - 我完全錯了,有一個更好的簡單的方法來做它。請讓我知道。
UPDATE 看這個: - https://www.youtube.com/watch?v=YgKcVBbvy2U
,所以我試圖用GSON將序列
則異常不來,但系列化的「意外‘d’」後,我得到響應上述方式也在原始的甲酸鹽中,它每次輸出這個[email protected]
我發送一個GET響應@符號更改後的文本。
我想要做的是刪除命中列表對象,只獲取JSON格式的聯繫人數據。 – Dinushka