2017-03-20 24 views
0

私はjsonファイルからデータを取得する必要があるプログラムを作成しています。内容は以下のとおりです。ジャクソンを使ってjson配列を印刷する

{ 
    "culture": "en-us", 
    "subscription_key": "myKey", 
    "description": "myDescription", 
    "name": "myName", 
    "appID": "myAppId", 
    "entities": [ 
     { 
      "name": "Location" 
     }, 
     { 
      "name": "geography" 
     } 
    ] 
} 

オンラインツールを使用しています。同じツールのPOJOを作成しました。それは以下の通りです。

ConfigDetails POJO

package com.config; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
    "culture", 
    "subscription_key", 
    "description", 
    "name", 
    "appID", 
    "entities" 
}) 
public class ConfigDetails { 

    @JsonProperty("culture") 
    private String culture; 
    @JsonProperty("subscription_key") 
    private String subscriptionKey; 
    @JsonProperty("description") 
    private String description; 
    @JsonProperty("name") 
    private String name; 
    @JsonProperty("appID") 
    private String appID; 
    @JsonProperty("entities") 
    private List<Entity> entities = null; 

    @JsonProperty("culture") 
    public String getCulture() { 
     return culture; 
    } 

    @JsonProperty("culture") 
    public void setCulture(String culture) { 
     this.culture = culture; 
    } 

    @JsonProperty("subscription_key") 
    public String getSubscriptionKey() { 
     return subscriptionKey; 
    } 

    @JsonProperty("subscription_key") 
    public void setSubscriptionKey(String subscriptionKey) { 
     this.subscriptionKey = subscriptionKey; 
    } 

    @JsonProperty("description") 
    public String getDescription() { 
     return description; 
    } 

    @JsonProperty("description") 
    public void setDescription(String description) { 
     this.description = description; 
    } 

    @JsonProperty("name") 
    public String getName() { 
     return name; 
    } 

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

    @JsonProperty("appID") 
    public String getAppID() { 
     return appID; 
    } 

    @JsonProperty("appID") 
    public void setAppID(String appID) { 
     this.appID = appID; 
    } 

    @JsonProperty("entities") 
    public List<Entity> getEntities() { 
     return entities; 
    } 

    @JsonProperty("entities") 
    public void setEntities(List<Entity> entities) { 
     this.entities = entities; 
    } 
} 

エンティティPOJO

package com.config; 

import java.util.HashMap; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
    "name" 
}) 
public class Entity { 

    @JsonProperty("name") 
    private String name; 

    @JsonProperty("name") 
    public String getName() { 
     return name; 
    } 

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

と私は、ファイルから値を印刷するには、以下のコードを使用しています。私は取得しています

MainClass obj = new MainClass(); 
     ObjectMapper mapper = new ObjectMapper(); 

     try { 

      // Convert JSON string from file to Object 
      ConfigDetails details = mapper.readValue(new File("properties.json"), ConfigDetails.class); 
      System.out.println(details.getAppID()); 

      List entities = details.getEntities(); 
      for (Object entity : entities) { 
       System.out.println(entity.toString()); 
      } 
     } catch (JsonGenerationException e) { 
      e.printStackTrace(); 
     } catch (JsonMappingException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

出力は

MyAppId 
[email protected] 
[email protected] 
ここ

代わりの値が利用可能な印刷、それはハッシュコードを印刷してあります。どうすれば値を印刷することができますか教えてください。そう、あなたはそれがStringに「エンティティ」を変換するために何を意味するのか定義していない

MainClass obj = new MainClass(); 
    ObjectMapper mapper = new ObjectMapper(); 

    try { 

     // Convert JSON string from file to Object 
     ConfigDetails details = mapper.readValue(new File("properties.json"), ConfigDetails.class); 
     System.out.println(details.getAppID()); 

     List entities = details.getEntities(); 
     for (Entity entity : entities) { 
      System.out.println(entity.getName()); 
     } 
    } catch (JsonGenerationException e) { 
     e.printStackTrace(); 
    } catch (JsonMappingException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

答えて

1

はちょうどこのようgetterメソッドentity.getName()にアクセスし、Entity代わりObjectの使用しますJavaはこれを行うデフォルトの方法(クラス名とオブジェクトIDを出力する)に戻っています。

"利用可能な値を印刷する"とはどういう意味ですか?この場合、値はEntityタイプのJavaオブジェクトであり、基本的に値を出力しています。

toString()メソッドをオーバーライドすることで、オブジェクトのString表現を制御できます。たとえば、次のようにEntityクラスに追加できます。

@Override 
public String toString() { 
    return "An entity named " + name; 
} 
0

おかげ

関連する問題