2017-12-06 118 views
0

次のようなJSONがあるとします。Jsonは、内部に入れ子になったjsonプロパティからjavaオブジェクトにマップします。

{ 
    "took": 1, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "skipped": 0, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 1, 
     "max_score": 1, 
     "hits": [ 
      { 
       "_index": "users", 
       "_type": "students", 
       "_id": "AWAEqh945A0BWjveqnd0", 
       "_score": 1, 
       "_source": { 
        "college": { 
         "sport": { 
          "name": "cricket", 
          "category": "batsman" 
         } 
        } 
       } 
      } 
     ] 
    } 
} 

_sourceフィールドから始まるCollegeオブジェクトにデータをマップしたいと考えています。

マッピングを開始する場所をJacksonまたはGsonに伝える方法はありますか? この例では_sourceから

ESサーバーからの応答。 AWSでホストされているESサーバー。 ES Java API RestClientを通じて通信するとします。 OKですか?ES Java API QueryBuilderでクエリしてください。 推奨されるもの。 ?あなたはGsonを使用して次の操作を行うことができ

+0

elasticsearchからこのデータを取得していますか?返信をありがとう。 – Abdul

+0

私はESのJava APIを使用しています。 RestClient。 RestClientからSearchResponseを取得するにはどうしたらいいですか? ESはAWSでホストされているので、RESTを通じて通信する必要があります.ESB QueryBuilderを通じてOKクエリーになりますか? –

+0

質問がありません –

答えて

0

私が言及する道の下に使用しました。

ObjectMapper objectMapper = new ObjectMapper(); 
JsonNode jsonNode = objectMapper.readTree(resultJson); 
String sourceString = jsonNode.at("/hits/hits/0/_source").toString(); 

College college = objectMapper.readValue(sourceString, College.class); 
0

JSONObject object = new JSONObject(s); // s is you String Json 
    JSONObject hits1 = object.getJSONObject("hits"); 
    JSONArray hits = hits1.getJSONArray("hits"); 
    for (Object jsonObj : hits) { 
     JSONObject json = (JSONObject) jsonObj; 
     JSONObject source = json.getJSONObject("_source"); 
     College college = new Gson().fromJson(source.getJSONObject("college").toString(), College.class); 
    } 

あなたはまた、これらの2つのPOJOを必要とする:

public class College { 

    private Sport sport; 

    public College() { 
    } 

    public Sport getSport() { 
     return sport; 
    } 

    public void setSport(Sport sport) { 
     this.sport = sport; 
    } 
} 

public class Sport { 

    private String name; 
    private String category; 

    public Sport() { 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getCategory() { 
     return category; 
    } 

    public void setCategory(String category) { 
     this.category = category; 
    } 
} 
関連する問題