私はelasticsearchデータベースを持っています。これは私が連絡先を格納するために使用したものです。私は以下の質問をします。Elasticsearch Java APIクエリJSONパーサー
public String getAllContacts() throws IOException {
SearchResponse response = client.prepareSearch("contact").get();
return response.toString();
}
のような結果が得られますので、その後、私は私の連絡先のクラスにして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
ので、私が思う問題は、私はこの{"id":"2","name";"dinu"}
のようにきれいなJSONを取得する場合、それは(私はそれを手動でテストしました)動作しますが、それは、そのような他の多くのものが付属していたクエリから来ている他のすべてのものの多くのエラーがありますJSONファイルの先頭部分(ヘッダーメタデータ)(上記のJSON結果イメージを確認してください)。
ので、私は2つのオプションを持っていると思う: -
オプション1: - がelasticsearch DBからクリーンな結果を得るので、私は、検索クエリを変更する必要があります。私はそれがelasticsearchでも可能かどうかはわかりません。もしそうなら誰かが(Java APIの)クエリを変更する方法の提案をすることができます。
オプション2: - JSONファイルをフィルタリングして不要なものをすべて削除し、それを連絡先オブジェクトにします。私はGSONとジャックソンの両方をフィルタリングされていないファイルで失敗しました。フィルタリングするための事前またはカスタム方法がある場合は、私に知らせてください。 3
オプション: - は、私は完全に間違っていると私に知らせてit.Please行うには良い簡単な方法があります。
UPDATE ウォッチTHIS: - ので、私は
をシリアライズするGSONを使用して上記の方法を試してみましたhttps://www.youtube.com/watch?v=YgKcVBbvy2U
は、例外が来ていないが、私は「予期しない 『D』」として連載した後、応答を取得しますまた、生のformateでこれを出力する[email protected]
私はGETを送信するたびに@記号の変更後のテキストに応答する '。
ヒットリストオブジェクトを削除し、連絡先データをJSON形式で取得するだけです。 – Dinushka